我有一个带整数值的NSMutableDictionary
,我想得到一个键数组,按它们各自的值升序排序.例如,使用本词典:
mutableDict = {
"A" = 2,
"B" = 4,
"C" = 3,
"D" = 1,
}
我想以数组["D", "A", "C", "B"]
结束.当然,我真正的字典远不止四项.
我有一个带整数值的NSMutableDictionary
,我想得到一个键数组,按它们各自的值升序排序.例如,使用本词典:
mutableDict = {
"A" = 2,
"B" = 4,
"C" = 3,
"D" = 1,
}
我想以数组["D", "A", "C", "B"]
结束.当然,我真正的字典远不止四项.
NSDictionary
方法keysSortedByValueUsingComparator:
应该可以做到这一点.
您只需要一个返回NSComparisonResult
的方法来比较对象的值.
你的字典是
NSMutableDictionary * myDict;
你的数组是
NSArray *myArray;
myArray = [myDict keysSortedByValueUsingComparator: ^(id obj1, id obj2) {
if ([obj1 integerValue] > [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedDescending;
}
if ([obj1 integerValue] < [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedAscending;
}
return (NSComparisonResult)NSOrderedSame;
}];
只需使用NSNumber
个对象,而不是数字常量.
顺便说一句,这是取自: