Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何对字典数组进行排序_Iphone_Objective C_Ios4 - Fatal编程技术网

Iphone 如何对字典数组进行排序

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

我需要使用字典中的键控对象对字典数组进行排序。对象是一个包含浮点的NSString。我使用了NSSortDescriptor,但它按字母顺序排序。我如何制作一个自定义选择器或比较器来进行数值计算

这应该让您了解如何使用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;
}];
[数组排序器:(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。我真的不想这么做,但我想从长远来看会更好。最好在我发布之前就把它做好,而不是在它发布给公众之后再尝试修复它。