我需要使用字典中的键控对象对字典数组进行排序。该对象是一个包含 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;
}];
obj1
和 obj2
是指向数组中一对字典对象的 id 指针。
无论您在 NSComparator block 中做什么都取决于您。只要您返回 NSOrderedSame
、NSOrderedAscending
或 NSOrderedDescending
即可。
一般来说,建议您使用实数值数据类型(类似于 [NSNumber numberWith...:x]
)来保存此类浮点值,而不是字符串。
关于iphone - 如何对字典数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5684276/