2010-11-21 44 views
2

我有一個NSArray的,我通過它的對象「發表」屬性以降序排序,最新的第一:如何通過數組對象的NSDate將NSArray拆分爲NSDictionary?

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"published" ascending:YES]; 
NSArray *descps = [[NSArray alloc] initWithObjects:[sortDescriptor reversedSortDescriptor], nil]; 
[storiesLocal sortUsingDescriptors:descps]; 
[descps release]; 
[sortDescriptor release]; 

所以,現在,我想每一天拆分此陣了,讓我可以使用它與UITableView。在我的例子中,每個日期將是一個tableview節頭。 所以,如果我的例子來分類的陣列(storiesLocal)有日期喜歡這樣:

2010-04-05 10:32:00 
2010-04-05 06:20:12 
2010-04-02 09:23:02 
2010-04-02 03:20:34 
2010-04-01 04:22:34 

然後我會在實現代碼如下標題,如「4月5日」,「4月2日」,「4月1日」。因此,每個對應的標題下面將有2,2和1行

本質上,我想要的結果是NSDictionary。它的每個關鍵都是一個日期(2010-04-02),每個值都是正確對象的NSArray。所有這些應按日期排序。新的先來。

我已經經歷了大約3次嘗試,每次都失敗,最終刪除了我寫的代碼。

編輯:因爲NSDictionary是一個無序列表,所以最好有一個字典數組,每個字典包括一個日期鍵和一個故事數組的鍵,因爲順序非常重要。

回答

0

這不是測試,但你可以試試:

NSArray *descps as above. 

NSDateFormatter *in_formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"]; 
NSDateFormatter *out_formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"MMMM d"]; 

NSString *todayStr = 
[formatter release]; 

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; 

for (ObjectType *obj in descps) { 
    NSDate *date = [in_formatter dateFromString:[obj published]]; 
    NSString *day = [out_formatter stringFromDate:date]; 

    NSArray *array = [dict valueForKey:day]; 
    if (array == nil) { 
    array = [[NSMutableArray alloc] init]; 
    [dict setValue:array forKey:day]; 
    [array release]; 
    } 

    [array addObject:obj]; 
} 

[in_formatter release]; 
[out_formatter release]; 
相關問題