我得到日期/时间为JSON,我作为一系列的NSArray对象存储。排序JSON日期
的JSON格式如下:
"created_at" = "2012-09-21T12:41:26-0500"
我怎么排序我的阵列,使最新的项目是在最高层。
谢谢
我得到日期/时间为JSON,我作为一系列的NSArray对象存储。排序JSON日期
的JSON格式如下:
"created_at" = "2012-09-21T12:41:26-0500"
我怎么排序我的阵列,使最新的项目是在最高层。
谢谢
你需要做的是日期字符串转换为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描述符。
感谢您的详细和有据可查的答案。干杯 – jini
这有帮助吗? [NSArray排序](http://www.cocoanetics.com/2009/03/nsarray-sorting-using-selectors/) – Anshu