【发布时间】:2011-04-16 03:25:27
【问题描述】:
我需要使用字典中的键控对象对字典数组进行排序。该对象是一个包含浮点数的 NSString。我使用了 NSSortDescriptor 但它按字母顺序排序。我将如何制作自定义选择器或比较器以数字方式执行此操作?
【问题讨论】:
标签: iphone objective-c ios4
我需要使用字典中的键控对象对字典数组进行排序。该对象是一个包含浮点数的 NSString。我使用了 NSSortDescriptor 但它按字母顺序排序。我将如何制作自定义选择器或比较器以数字方式执行此操作?
【问题讨论】:
标签: iphone objective-c ios4
这应该让您了解如何使用 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;
}];
obj1 和 obj2 是指向数组中一对字典对象的 id 指针。
无论您在 NSComparator 块中做什么,都取决于您。只要您返回NSOrderedSame、NSOrderedAscending 或NSOrderedDescending。
一般而言,建议您使用实数数据类型 (à la [NSNumber numberWith...:x]) 来保存此类浮点值,而不是字符串。
【讨论】: