我需要使用字典中的键控对象对字典数组进行排序。该对象是一个包含float的NSString。我使用了NSSortDescriptor,但它按字母顺序排序。如何使用自定义选择器或比较器进行数字化处理?
答案 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;
}];
obj1
和obj2
是指向数组中一对字典对象的id指针。
无论您在NSComparator块中执行什么操作都取决于您。只要您返回NSOrderedSame
,NSOrderedAscending
或NSOrderedDescending
。
通常,建议您使用实数数据类型(àla[NSNumber numberWith...:x]
)来保存此类浮点值,而不是字符串。