我有一个应用程序从服务器检索大量数值数据并将其保存到NSMUtableArray
。现在值是浮点数,看起来像10.0; 11.2; 30.003; 109.23等。
现在我使用sortUsingSelector(@selector(compare:))
方法对数组进行排序,以找到最大值和最小值。我的输出如下:
10.0 109.23 11.2 30.003
现在我假设compare:选择器将值视为字符串并相应地对它们进行排序。但那不是我想要的。我希望根据浮点值对值进行排序。 所以我的问题是:有没有办法根据浮动数组的数值对它们进行排序?
答案 0 :(得分:3)
比较可能有一个捷径,并且没有错误检查,但是这样的事情应该可以解决问题:
NSArray* sorted = [unsorted sortedArrayWithOptions:0 usingComparator:^(id v1, id v2) {
float f1 = [v1 floatValue];
float f2 = [v2 floatValue];
if (f1 == f2) return NSOrderedSame;
return (f1 < f2) ? NSOrderedAscending : NSOrderedDescending;
}];
或者您可以将值存储为NSNumber
。
答案 1 :(得分:1)
您应该将它们存储为NSNumber
而不是NSStrings
。您当前正在添加到阵列的位置,请执行以下操作:
[myArray addObject:[NSNumber numberWithFloat:incomingFloat]];
现在比较选择器将按数字顺序排序。