ios - 在一个array中有很多个model,现在需要将model.date日期是同一天的放入一个array?
巴扎黑
巴扎黑 2017-04-17 17:53:02
0
2
286

在一个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],

]
请问,应该如何做?

巴扎黑
巴扎黑

membalas semua(2)
阿神

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

伊谢尔伦

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan