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

Ios 按NSDate类型的值对NSMutableDictionary键进行排序,ios,objective-c,nsmutabledictionary,Ios,Objective C,Nsmutabledictionary,我有一个名为LogDateMsg的NSMutableDictionary。在本词典中,我将NSDate对象存储为键为long类型的值 我需要根据密钥的日期值按降序对其进行排序。我正在使用下面的代码 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"d.M.yyyy kk:mm:ss"]; NSArray *currKeys = [LogDateMsg keysSorted

我有一个名为
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];
}];
但是,上述情况并没有给我所需的结果

上面的代码是否有问题,或者是否有更好的方法来执行我想要的


提前谢谢

@ShamasS,我已经看到了答案,但我的问题不同。这是一个NSMutableDictionary,我正在尝试对其进行排序。您能否显示一个作为键的示例日期字符串。此外,您不能直接在字典中存储长值,因为字典只能保存对象。Long是一种基本类型。您必须先将其包装为NSNumber以使其成为对象。@paranoidcoder,我的示例键如下:
在排序currKeys之前:(11896414211950490021102520059、1681692777、1649760492、1967513926、1714636915、195774747393、1804289383、2044897763)
@paranoidcoder,和值为:
排序前的值:(“2015年12月14日11:34:15、2015年12月14日11:34:15、2015年12月14日11:34:14、2015年12月14日11:34:14、2015年12月14日11:34:16、2015年12月14日11:34:14、2015年12月14日11:34:15、2015年12月14日11:34:14、2015年12月14日11:34:14、2015年12月14日11:34:14、2015年12日11:14、2015年12月14日11:34:14、2015,“Mon Dec 14 11:34:15 2015”)
不在评论中给出理由的情况下否决投票应该是一项政策,否则我们应该如何了解我们做错了什么。我们可以匿名,但必须提供理由。
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);