如何对字典数组进行排序

时间:2011-04-16 03:25:28

标签: iphone objective-c ios4

我需要使用字典中的键控对象对字典数组进行排序。该对象是一个包含float的NSString。我使用了NSSortDescriptor,但它按字母顺序排序。如何使用自定义选择器或比较器进行数字化处理?

1 个答案:

答案 0 :(得分:5)

这可以让您了解如何使用NSComparator块完成此操作:

[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块中执行什么操作都取决于您。只要您返回NSOrderedSameNSOrderedAscendingNSOrderedDescending

通常,建议您使用实数数据类型(àla[NSNumber numberWith...:x])来保存此类浮点值,而不是字符串。