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

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

]
请问,应该如何做?

巴扎黑
巴扎黑

répondre à tous(2)
阿神

Est-ce du JSON ? Directement
var keymap={};
puis parcourez la liste
pour déterminer si le keymap[item.date] n'est pas défini
Si oui, attribuez-le à un tableau
Sinon, appuyez sur l'élément dans
Parcourez enfin un keymap et poussez toutes les valeurs dans une liste

伊谢尔伦

Tout d'abord, votre model.date est-il de type NSString ou NSDate ? Le format de date n'est-il pas "aaaa.MM.jj HH.mm"
Mettez d'abord de côté ces questions et concentrez-vous sur le format de données donné par le ? questioner. , fournit une idée, en supposant que model.date est de type NSString (s'il est de type NSDate, il est converti en type NSString).
1. Parcourez ce tableau, supprimez d'abord les espaces de début et de fin de model.date

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

2. Ensuite, interceptez la sous-chaîne de la tête au premier espace de str, par exemple : "2016.4.12 8:25" intercepte "2016.4.12", et puis en comparant str, vous savez où mettre le correspondant. modéliser quel tableau

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

Écrivez une démo pour vérifier, le code est joint ci-dessous

//原始数组
    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);

Sortie console correspondante :

Observez l'adresse mémoire du modèle et vérifiez qu'il n'y a pas de problème.
Si model.date est de type NSDate, vous pouvez également convertir model.date en une chaîne de "aaaa-MM-jj", puis comparer cette chaîne. J'espère que ma réponse vous sera utile.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal