iphone - 如何对字典数组进行排序

标签 iphone objective-c ios4

我需要使用字典中的键控对象对字典数组进行排序。该对象是一个包含 float 的 NSString。我使用了 NSSortDescriptor 但它按字母顺序排序。我如何制作自定义选择器或比较器以数字方式执行此操作?

最佳答案

这应该让您了解如何使用 NSComparator block 来完成此操作:

[array sortUsingComparator:(NSComparator)^(id obj1, id obj2){
    double firstValue = [[obj1 objectForKey:@"someKey"] doubleValue];
    double secondValue = [[obj2 objectForKey:@"someKey"] doubleValue];
    double valueDiff = firstValue - secondValue;
    return (valueDiff == 0) ? NSOrderedSame : (valueDiff < 0) ? NSOrderedAscending : NSOrderedDescending;
}];

obj1obj2 是指向数组中一对字典对象的 id 指针。 无论您在 NSComparator block 中做什么都取决于您。只要您返回 NSOrderedSameNSOrderedAscendingNSOrderedDescending 即可。

一般来说,建议您使用实数值数据类型(类似于 [NSNumber numberWith...:x])来保存此类浮点值,而不是字符串。

关于iphone - 如何对字典数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5684276/

相关文章:

iphone - 我应该分配 NSMUtableArray 实例变量吗?

iPhone sdk paypal 集成 API

objective-c - 子类化文本字段和标记字段不显示光标

iphone - 更改 UIAlertView 中取消按钮的位置?

json - 从远程 JSON 文件设置 UITableViewCell 数据

ios - xcode - webview 内容显示在状态栏中

iphone - 使用IB自动重新定位UI元素

objective-c - 在 NSButton 上使用 -setImage

objective-c - 指定 NSDictionary 条目的值类型

ios - 如何在 Xcode 4 中发布 json 对象?