我得到日期/時間爲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