我的程序中有几个字典,我将所有这些字典放入一个数组中,我想对这些日期进行排序,字典应该交换其位置,下面显示的是我正在使用的代码,但我没有对它进行排序。请帮助解决这个问题
** NSLog(@“在排序之前-%d”,[allDataArray计数]);
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);**
最佳答案
看起来您在这里正在重新发明轮子(几十年前已经解决了排序问题),而是这样做:
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"]];
}]
关于iphone - 排序NSDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8136367/