iphone - 排序NSDate

标签 iphone objective-c ios nsdate nsdictionary

我的程序中有几个字典,我将所有这些字典放入一个数组中,我想对这些日期进行排序,字典应该交换其位置,下面显示的是我正在使用的代码,但我没有对它进行排序。请帮助解决这个问题

** 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/

相关文章:

objective-c - 如何将适用于 UIView 的 View 转换应用到 NSView?

Xcode 8/Swift 3 中的 iOS 异步单元测试(waitForExpectations 失败)

ios - 我可以在 TableView Controller 中有另一个 TableView 吗?

ios - 如何通过提高音量按钮拍照并在 iOS 中显示任何弹出窗口?

iphone - 一个 UIView 中的许多小图像

ios - UIView 的空中打印生成白页

ios - 使用 IP 地址连接到 Bonjour 服务

iphone - 如何识别屏幕上的对角线滑动?

iphone - 我如何使用 NSConditionLock?或 NSCondition

iphone - UITextView 和 UIPickerView 都有自己的 UIToolbar