2012-09-23 156 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