2011-11-01 41 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]]; 

現在比較選擇器將按數字順序排序。