按类型NSDate的值对NSMutableDictionary键进行排序

时间:2015-12-14 06:25:52

标签: ios objective-c nsmutabledictionary

我有一个名为LogDateMsg的NSMutableDictionary。在这个字典中,我将NSDate对象存储为键类型为long的值。

我需要根据它们的日期值按降序对键进行排序。我正在使用以下代码

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"d.M.yyyy kk:mm:ss"];
NSArray *currKeys = [LogDateMsg keysSortedByValueUsingComparator:^NSComparisonResult(id a, id b) {
    NSString* first = (NSString*)a;
    NSString* second = (NSString*)b;
    NSDate* d1=[formatter dateFromString:first];
    NSDate* d2=[formatter dateFromString:second];
    return [d2 compare:d1];
}];

但是,以上并没有给我所需的结果。

上述代码是否有问题或是否有更好的方法来执行我想要的内容?

提前致谢!

1 个答案:

答案 0 :(得分:-1)

NSArray *keys = @[@1189641421, @1350490027, @1102520059, @1681692777];
NSArray *values =  @[@"Mon Dec 14 11:34:10 2015", @"Mon Dec 14 11:34:11 2015", @"Mon Dec 14 11:34:12 2015", @"Mon Dec 14 11:34:13 2015"];
NSMutableDictionary *d = [[NSMutableDictionary alloc] initWithObjects:values forKeys:keys];

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"EEE MMM dd hh:mm:ss yyyy"];
currKeys = [d keysSortedByValueUsingComparator:^NSComparisonResult(id a, id b) {
    NSDate *d1 =[formatter dateFromString:(NSString*)a];
    NSDate *d2 =[formatter dateFromString:(NSString*)b];
    return [d2 compare:d1];
}];

NSLog_SM(@"%@", currKeys);