我将日期/时间作为 JSON 存储为一系列 NSArray 对象。
JSON格式如下:
"created_at" = "2012-09-21T12:41:26-0500"
如何对数组进行排序,以使最新的项目位于最顶部。
谢谢你
您需要做的第一件事是将日期字符串转换NSDate
为原始数组中每个项目的对象,这是关键,因为系统知道如何比较日期,但不知道 ISO8601 字符串。
有几种方法可以进行转换,在下面的示例中,我在 NSDate 上使用自定义类别,您可以使用此问题的答案进行转换:是否有一种简单的方法可以将 ISO8601 时间戳转换为格式化的 NSDate?,
一旦有了,使用如下所示NSDates
的排序非常容易:NSSortDescriptor
NSArray *originalArray = @[
@{@"created_at" : [NSDate dateFromISO8601String:@"2012-09-21T12:41:26-0500"]},
@{@"created_at" : [NSDate dateFromISO8601String:@"2012-07-21T12:41:26-0500"]},
@{@"created_at" : [NSDate dateFromISO8601String:@"2012-06-21T12:41:26-0500"]},
@{@"created_at" : [NSDate dateFromISO8601String:@"2012-10-21T12:41:26-0500"]}
];
NSSortDescriptor *sortDescriptor =
[[NSSortDescriptor alloc] initWithKey:@"created_at" ascending:NO];
NSArray *sortedArray =
[originalArray sortedArrayUsingDescriptors:@[sortDescriptor]];
该变量sortedArray
包含原始数组的排序版本,如您所见,我们传递了一个排序描述符数组,这允许您传递多个排序描述符,以防您想根据日期和另一个属性(例如标题,名称)作为辅助描述符。