0

我将日期/时间作为 JSON 存储为一系列 NSArray 对象。

JSON格式如下:

"created_at" = "2012-09-21T12:41:26-0500"

如何对数组进行排序,以使最新的项目位于最顶部。

谢谢你

4

1 回答 1

1

您需要做的第一件事是将日期字符串转换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包含原始数组的排序版本,如您所见,我们传递了一个排序描述符数组,这允许您传递多个排序描述符,以防您想根据日期和另一个属性(例如标题,名称)作为辅助描述符。

于 2012-09-23T07:14:08.410 回答