2010-05-12 88 views
1

我在我的應用程序中獲得了一個數組,我需要通過它的一個鍵來訂購。如何訂購一個數組

基本上,應用程序所做的是將緯度和經度放在某處,計算距我實際位置的距離並創建一個包含名爲「距離」的鍵的數組。

我使用

myArray sortUsingDescriptors: 
    [NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:@"distance" ascending:YES] autorelease]]]; 

我不知道它的工作,我的意思是第一個排序結果,但隨後顯示的距離更接近前面的,因爲例如:

0.8 km 
1.6 km 
1.9 km 
10053.9 km 
1098.0 km 
2372.0 km 
470.5 km 

任何建議?

我提前感謝您的任何幫助。

法布里奇奧

+0

調出陣列客廳,並說:「嗨,我想訂購一個陣列請。」 – Jasarien 2010-05-12 15:40:22

+0

好吧給我的號碼,我會做的 – Fabrizio 2010-05-12 16:54:53

回答

4

這看起來像一個有效的排序 - 如果你的距離值是一個字符串。要獲得數字排序,您應該將其保存爲NSNumber。

+0

你的意思是將它保存爲陣列內的一個NSNumber?我不太確定我已經明白了,Btw thanx。 – Fabrizio 2010-05-12 17:01:49

+0

好的確定,非常感謝。 – Fabrizio 2010-05-12 17:44:44

0

您應該能夠使用尊重數值的自定義排序功能。

(現在我假設你的對象的「距離」關鍵是NSString

static NSInteger numericCompare(id first, id second, void* context) 
{ 
    return [(NSString*)[first distance] compare:[second distance] options:NSCaseInsensitiveSearch | NSNumericSearch]; 
} 

現在你可以使用排序方法得到排序數組中NSArray

NSArray* sortedArray = [myArray sortedArrayUsingFunction:numericCompare context:NULL];