iphone - 对数组中的日期进行排序

标签 iphone ios objective-c xcode sorting

我有一个数组如下,它来自 Sqlite DB 并且在字符串中:

(

{ 
 id=1;
duedate = "01-Apr-2013";
},

{
 id=2;
duedate = "01-May-2013";
},

{
id=3;
duedate = "01-Jun-2013";
},

{
 id=4;
duedate = "11-Jul-2013";
}

)

我的数组排序代码

NSSortDescriptor *sortDesc = [[NSSortDescriptor alloc] initWithKey:@"duedate" ascending:YES];
[assessment_list sortUsingDescriptors:[NSArray arrayWithObject:sortDesc]];

但是这给出了错误的排序数组如下

(

{ 
 id=1;
duedate = "01-Apr-2013";
},

{
id=3;
duedate = "01-Jun-2013";
},

{
id=2;
duedate = "01-May-2013";
},

{
 id=4;
duedate = "11-Jul-2013";
}

)

我搜索过但没有找到这个问题

最佳答案

这是因为它是按字母顺序排序的。

要按日期排序,您需要实现类似这样的方法

NSInteger dateSort(id dict1, id dict2, void* context){
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"mm/dd/yyyy"];
NSDate *date1 = [formatter dateFromString:[dict1 objectForKey:@"duedate"]];
NSDate *date2 = [formatter dateFromString:[dict2 objectForKey:@"duedate"]];
    return [[date1 compare:date2];
}

然后像这样调用函数

[dateArray sortUsingFunction:dateSort context:NULL];

关于iphone - 对数组中的日期进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15611363/

相关文章:

iphone - UITableViewController NavigationItem 按钮问题

ios 应用程序仅在 ios 9 上使用图像文字填充单元格时崩溃,不清楚崩溃日志

iphone - EAOutputStream 写入 :maxLength: - 230 failed to write because stream does not have space available

iphone - 如何在 xcode 中运行 PJSIP?

ios - UICollectionView estimatedItemSize - 最后一个单元格未对齐

iphone - 如果在 addSubView 之后调用,UIButton 不会移动

ios - Images.xcassets 中应用程序图标的正确尺寸是多少

ios - 将蒙版的大小更改为带有动画的方向

ios - 如何解析 JSON 对象数组的 NSString?

ios - "Invalid use of ' 这个 ' in non-member function"在 objective-c 上下文中?