PLZ排序字典的指导我如何解决这字典相对于日期
dict= { "april 2012"=[1,2 ,3 ,4], "march 2013"=[3,4,6,7], "may 2013"=[6,7,8,3], "june 2013"=[6,6,7,8,3], }
如何相对于日期从新到旧排序。
PLZ排序字典的指导我如何解决这字典相对于日期
dict= { "april 2012"=[1,2 ,3 ,4], "march 2013"=[3,4,6,7], "may 2013"=[6,7,8,3], "june 2013"=[6,6,7,8,3], }
如何相对于日期从新到旧排序。
运行这段代码
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:@[@6,@6,@7,@8, @3] forKey:@"june 2013"];
[dict setObject:@[@1,@2,@3,@4] forKey:@"april 2012"];
[dict setObject:@[@6,@7,@8,@3] forKey:@"may 2013"];
[dict setObject:@[@3,@4,@6,@7] forKey:@"march 2013"];
NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.dateFormat = @"MMMM yyyy";
NSArray *keys = [dict allKeys];
NSArray *sortedKeys = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSDate *date1 = [dateFormatter dateFromString:obj1];
NSDate *date2 = [dateFormatter dateFromString:obj2];
return [date1 compare:date2];
}];
NSLog(@"%@", sortedKeys);
我得到
2013-04-28 18:02:10.322 Test[746:19d03] (
"april 2012",
"march 2013",
"may 2013",
"june 2013"
)
希望它能帮助。
编辑
为了得到相反的顺序排列替换随返回:
NSComparisonResult result = [date1 compare:date2];
if (result == NSOrderedDescending) {
return NSOrderedAscending;
} else if (result == NSOrderedAscending) {
return NSOrderedDescending;
} else {
return NSOrderedSame;
}
或者你也可以反转阵列(How can I reverse a NSArray in Objective-C?)的顺序,或只是在相反的顺序
迭代非常感谢您的帮助,您是否会告诉我们如何从晚上十一月份到旧月份进行分类。谢谢。 – 2013-04-28 16:12:25
你的意思是忽略了一年? – tkanzakic 2013-04-28 16:18:58
我只是说,该数组应该是(“2013年6月”,“2013年5月”,“2013年3月”,“2012年4月”) – 2013-04-28 16:22:02
在你的问题中存在一个概念错误,在字典中没有按照定义排序 – tkanzakic 2013-04-28 15:49:02
这是我在这个表单中存储值的唯一问题,但不需要对此进行排序。 – 2013-04-28 15:51:42
调用[dict allKeys],然后排序产生的数组 – tkanzakic 2013-04-28 15:53:41