2012-09-23 109 views
0

我得到日期/时间为JSON,我作为一系列的NSArray对象存储。排序JSON日期

的JSON格式如下:

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

我怎么排序我的阵列,使最新的项目是在最高层。

谢谢

+0

这有帮助吗? [NSArray排序](http://www.cocoanetics.com/2009/03/nsarray-sorting-using-selectors/) – Anshu

回答

1

你需要做的是日期字符串转换为NSDate对象的原始数组里面的物品的每一个的第一件事情,这是关键的,因为系统知道如何比较日期,但不是ISO8601字符串。

有几种方法来进行转换,在本例中波纹管我使用的NSDate一个自定义类别,你可以使用这个问题的答案的转换:Is there a simple way of converting an ISO8601 timestamp to a formatted 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包含您的原始数组的排序版本,你可以看到,我们通过排序描述符的数组,这使您可以通过多种排序描述符,如果你想要的话根据日期和其他属性(例如标题,名称)作为secodnary描述符。

+0

感谢您的详细和有据可查的答案。干杯 – jini