如何对字典数组进行排序

syc*_*efx 2 iphone objective-c ios4

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

Reg*_*ent 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;
}];
Run Code Online (Sandbox Code Playgroud)

obj1并且obj2是指向数组中一对字典对象的id指针.无论您在NSComparator块中执行什么操作都取决于您.只要你返回NSOrderedSame,NSOrderedAscendingNSOrderedDescending.

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