2011-10-14 59 views
5

我有一組數組中的詞典。我在tableview中顯示這些數據。在tableview中,我計算到每個對象的距離並顯示在單元格中。按距離排序

數據需要能夠根據遞增的距離進行排序,很明顯每個用戶位置最好的方法是什麼?我想把所有的字典分開並插入距離,然後放寬NSSortDescriptor,問題是,我太懶了。

現在,我只是用indexPath.row循環所有的數據並顯示它。

回答

13

您可以使用基於塊的比較器api輕鬆進行排序。

NSArray *rawData = [NSArray arrayWithContentsOfFile:pathDoc]; 

rawData = [rawData sortedArrayUsingComparator: ^(id a, id b) { 

    CLLocationDistance dist_a= [[a objectsForKey:@"coordinate"] distanceFromLocation: userPosition]; 
    CLLocationDistance dist_b= [[b objectsForKey:@"coordinate"] distanceFromLocation: userPosition]; 
    if (dist_a < dist_b) { 
     return NSOrderedAscending; 
    } else if (dist_a > dist_b) { 
     return NSOrderedDescending; 
    } else { 
     return NSOrderedSame; 
    } 
}]; 

你應該很容易找到calculate_distance(user_position, a);與谷歌的實現。

+0

我已經用distanceFromLocation計算了距離:但是對於一個位置,我需要NSArray中的字典中的經度和緯度。我使用for()和NSDictionary * dict = [array objectAtIndex:i]打開了這個循環,但是我如何使用基於塊的比較器API匹配它? – MaikelS

+1

看到我的編輯。要獲得更多幫助,您必須發佈代碼。 – vikingosegundo

+0

更多代碼在這裏:http://pastebin.com/dndv7dk1編輯了一下,以保持它的可讀性。 – MaikelS