2010-11-21 58 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];