Iphone 如何对字典数组进行排序
我需要使用字典中的键控对象对字典数组进行排序。对象是一个包含浮点的NSString。我使用了NSSortDescriptor,但它按字母顺序排序。我如何制作一个自定义选择器或比较器来进行数值计算 这应该让您了解如何使用NSComparator块完成此操作:Iphone 如何对字典数组进行排序,iphone,objective-c,ios4,Iphone,Objective C,Ios4,我需要使用字典中的键控对象对字典数组进行排序。对象是一个包含浮点的NSString。我使用了NSSortDescriptor,但它按字母顺序排序。我如何制作一个自定义选择器或比较器来进行数值计算 这应该让您了解如何使用NSComparator块完成此操作: [array sortUsingComparator:(NSComparator)^(id obj1, id obj2){ double firstValue = [[obj1 objectForKey:@"someKey"] dou
[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;
}];
[数组排序器:(NSComparator)^(id obj1,id obj2){
double firstValue=[[obj1 objectForKey:@“someKey”]doubleValue];
double secondValue=[[objectForKey:@“someKey”]doubleValue];
双值差=第一个值-第二个值;
返回值(valueDiff==0)?传感器终止名称:(valueDiff<0)?传感器终止搜索:传感器终止搜索;
}];
obj1
和obj2
是指向数组中一对字典对象的id指针。
无论您在NSComparator区块内做什么,都由您决定。只要返回sensorderedame
,sensorderedescing
或sensorderedescing
通常,建议您使用实数值数据类型(a la
[NSNumber numberWith…:x]
)来保存此类浮点值,而不是字符串。谢谢您的帮助。这很有效。我正在考虑重新编写我的应用程序,将NSString更改为NSNumber。我真的不想这么做,但我想从长远来看会更好。最好在我发布之前就把它做好,而不是在它发布给公众之后再尝试修复它。