2011-03-24 22 views
0

以下是我拥有的: 一个NSMutableArray持有多个NSDictionary对象。 每个NSDictionary都有一个日期字符串作为元素。按日期排列NSArray包含的NSDictionaries的元素

这里是我的循环,打印出每个NSDictionary

[dateFormatterIn setDateFormat:@"yyyyMMddHHmmss\n"]; 
[dateFormatterOut setDateFormat:@"dd.MM.yyyy"];  

for(NSMutableDictionary *thisStory in stories){ 
     id fromDate = [thisStory objectForKey:@"from_time"]; 
     id date = [dateFormatterIn dateFromString:fromDate]; 
     NSLog(@"%@", [dateFormatterOut stringFromDate:date]); 
    } 

日期有没有人有一个线索,我怎么可以排序我的数组按日期stories? 我对客观C相当陌生。 在此先感谢!

回答

5

使用你的故事阵列的sortUsingDescriptor方法应该做的伎俩:

NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey: @"from_time" ascending: YES] autorelease]; 
[stories sortUsingDescriptors: [NSArray arrayWithObject: sortDescriptor]]; 
+0

此wpuld是我的偏好,或者您可以使用sortUsingSelector并为您的故事类添加一个比较 – vickirk 2011-03-24 14:49:21

0

假设下面的数据结构:数组变量名:collectionArray = [ { date: "01-02-2015 02:01", value: 1, name: "rajan" }, { date: "01-02-2014 02:01", value: 11, name: "rajan1" }, { date: "01-02-2012 02:01", value: 111, name: "rajan2" } ]

我们解决这阵的NSDictionary按日期,我​​们按照以下步骤

`NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@“dd-MM-yyyy HH:mm”];

NSMutableArray *sortedArray = [[collectionArray sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *obj1, NSDictionary *obj2) { 

    NSString *d1Str =[obj1 valueForKey:@"date"]; 
    NSString *d2Str =[obj2 valueForKey:@"date"] 

    NSString *d1Timestamp = [NSString stringWithFormat:@"%f", [[formatter dateFromString:d1Str] timeIntervalSince1970]]; 
    NSString *d2Timestamp = [NSString stringWithFormat:@"%f", [[formatter dateFromString:d2Str] timeIntervalSince1970]]; 

    return [d2Timestamp compare:d1Timestamp options:NSNumericSearch]; // descending order 


}] mutableCopy];`