Сортировка NSDates - PullRequest
       14

Сортировка NSDates

1 голос
/ 15 ноября 2011

У меня есть несколько словарей в моей программе, я поместил все эти словари в массив, и я хочу отсортировать эти даты, соответственно, словарь должен поменять свою позицию, ниже показан код, который я использую, но я не сортирую его. Пожалуйста, помогите мне решить эту проблему

** NSLog (@ "перед сортировкой ---% d", [allDataArray count]);

for(int i=0;i<[allDataArray count]-1;i++){
    NSString *dateStr1=[[allDataArray objectAtIndex:i]objectForKey:@"Date"];
    for(int j=i+1;j<[allDataArray count];j++){
        NSString *dateStr2=[[allDataArray objectAtIndex:j]objectForKey:@"Date"];
        if(([(NSDate*)dateStr1 compare:(NSDate*)dateStr2]==NSOrderedAscending)
           ||([(NSDate*)dateStr1 compare:(NSDate*)dateStr2]==NSOrderedSame))
            [allDataArray replaceObjectAtIndex:i withObject:[allDataArray objectAtIndex:j]];
    }
}
   NSLog(@"afterSorting-numbers--%@",allDataArray);**

1 Ответ

11 голосов
/ 15 ноября 2011

Похоже, вы заново изобретаете колесо (сортировка решена десятилетия назад), вместо этого сделайте следующее:

NSArray *allDataArray = ...;
NSArray *sortedAllDataArray = [allDataArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"Date" ascending:YES]]];

или это:

NSArray *allDataArray = ...;
NSArray *sortedAllDataArray = [allDataArray sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *dict1, NSDictionary *dict2) {
    return [[dict1 objectForKey:@"Date"] compare:[dict2 objectForKey:@"Date"]];
}]
...