我有一个带整数值的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个对象,而不是数字常量.

顺便说一句,这是取自:

Objective-c相关问答推荐

如何限制 UITextField 中的特殊字符(点和下划线除外)?

在 Objective C 中将属性标记为已弃用

在 Objective-C 中实现纯虚方法

为什么我不应该在 init/dealloc 中使用 Objective C 2.0 访问器?

在 Xcode 中为无法识别的 Select 器创建断点

在 NSData 和 base64 字符串之间转换

在objective-c / cocoa-touch中是否有一个方便的功能来找到最小的数字?

在 iOS 和 Mac OS X 应用程序中使用 C++

判断 NSInteger 是奇数还是偶数

iOS 7 状态栏与 NavigationBar 冲突

当服务器上的图像文件更改时,我的应用程序中的 SDWebImage 缓存图像会发生什么情况?

iOS:如何将 UIViewAnimationCurve 转换为 UIViewAnimationOptions?

UITableViewCell 右侧有图像?

判断 NSString 是否仅包含字母数字 + 下划线字符

以编程方式查找 iphone 的语言环境货币

IOS 中的圆形进度条

如何以编程方式在 UINavigationController 中按下返回按钮

Objective-C 中的同步和异步调用与多线程有什么区别?

Objective-c 2.0 中的可选参数?

iPhone如何在打字时获取UITextField的文本?