2011-11-01 20 views
0

我有一个应用程序,它从服务器中检索大量数字数据并将其保存到NSMUtableArray中。现在这些值是浮点数,看起来像10.0; 11.2; 30.003; 109.23等比较使用比较的数组中的浮点数:选择器

现在我用sortUsingSelector(@selector(compare:))方法排序我的数组,以找到最大值和最小值。我的输出如下:

10.0 109.23 11.2 30.003

现在我想的比较:选择对待值作为相应的字符串和命令他们。但那不是我想要的。我想要根据它们的浮点值对这些值进行排序。 所以我的问题是:有没有什么办法来根据它们的数值对浮点数组进行排序?

回答

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,因为他们进来了。

+0

感谢您的快速回复!使用比较方法对我来说就像一个魅力! – iJatrat

+0

你真正的问题是你将值存储为字符串。如果你将它们存储为NSNumber对象,那么你可以简单地使用compare:方法,就像你正在做的那样。 –

1

您应该将它们存储为NSNumber而不是NSStrings。如果您正在添加到阵列中,请改为:

[myArray addObject:[NSNumber numberWithFloat:incomingFloat]]; 

现在比较选择器将按数字顺序排序。