cari

Rumah  >  Soal Jawab  >  teks badan

ios - 在一个array中有很多个model,现在需要将model.date日期是同一天的放入一个array?

在一个array中有一个model,类似这样:
[

model1.date = 2016.4.12 8:25
model2.date = 2016.4.12 9:20
model3.date = 2016.3.13 8:30
model4.date = 2016.3.11 8:15
model5.date = 2015.2.12 1:20
model6.date = 2015.2.12 2:25

]

现在需要做的是将日期是同一天的放入一个数组中,没有日期相同的也放入一个数组中,最终要得到的数组应该是这样的:
[

[model1,model2],
[model3],
[model4],
[model5,model6],

]
请问,应该如何做?

巴扎黑巴扎黑2889 hari yang lalu292

membalas semua(2)saya akan balas

  • 阿神

    阿神2017-04-17 17:55:02

    Adakah ini json? Terus
    var keymap={};
    dan kemudian lintasi senarai
    untuk menentukan sama ada keymap[item.date] tidak ditentukan
    Jika ya, tetapkan ia kepada tatasusunan
    Jika tidak, tolak item dalam
    Akhirnya melintasi peta kunci dan menolak semua nilai ke dalam senarai

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:55:02

    Pertama sekali, adakah model.date jenis anda NSString atau NSDate? Adakah format tarikh bukan "yyyy.MM.dd HH.mm"
    Ketepikan dahulu soalan ini dan fokus pada format data yang diberikan oleh questioner. , memberikan idea, dengan mengandaikan bahawa model.date adalah daripada jenis NSString (jika ia adalah jenis NSDate, ia ditukar kepada jenis NSString).
    1. Lintas tatasusunan ini, mula-mula keluarkan ruang hadapan dan belakang daripada model.date

    str = [model.date stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    

    2. Kemudian memintas subrentetan dari kepala ke ruang pertama dari str, sebagai contoh: "2016.4.12 8:25" memintas "2016.4.12", dan kemudian dengan membandingkan str, anda tahu di mana untuk meletakkan yang sepadan model tatasusunan yang mana

    NSRange range = [str rangeOfString:@" "];
    NSString *subStr = [str substringToIndex:range.location];
    

    Tulis Demo untuk mengesahkan, kod dilampirkan di bawah

    //原始数组
        NSArray *array = @[[Model modeWithDate:@"2016.4.12 8:25"],
                           [Model modeWithDate:@"2016.4.12 9:20"],
                           [Model modeWithDate:@"2016.3.13 8:30"],
                           [Model modeWithDate:@"2016.3.11 8:15"],
                           [Model modeWithDate:@"2015.2.12 1:20"],
                           [Model modeWithDate:@"2015.2.12 2:25"]];
        NSLog(@"array:%@",array);
        
        NSMutableArray *dateArray = [NSMutableArray array];
        for (Model *item in array) {
            if (![item isKindOfClass:[Model class]]) {
                return;
            }
            //去除首尾空格
            NSString *dateStr = [item.date stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
            //截取从头部到空格之间的字符串
            NSRange range = [dateStr rangeOfString:@" "];
            NSString *str = [dateStr substringToIndex:range.location];
            BOOL isContain = NO;
            for (NSMutableArray *arrayItem in dateArray) {
                Model *firstModel = [arrayItem firstObject];
                NSString *firstDateStr = [firstModel.date stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
                NSRange spaceRange = [firstDateStr rangeOfString:@" "];
                NSString *firstStr = [firstDateStr substringToIndex:spaceRange.location];
                if ([firstStr isEqualToString:str]) {
                    isContain = YES;
                    [arrayItem addObject:item];
                    break;
                }
            }
            if (!isContain) {
                [dateArray addObject:[NSMutableArray arrayWithObject:item]];
            }
        }
        
        NSLog(@"dateArray:%@",dateArray);
    

    Output konsol yang sepadan:

    Perhatikan alamat memori model dan sahkan bahawa tiada masalah.
    Jika model.date daripada jenis NSDate, anda juga boleh menukar model.date kepada rentetan "yyyy-MM-dd", dan kemudian bandingkan rentetan ini, saya harap jawapan saya akan membantu anda.

    balas
    0
  • Batalbalas