1

我有一個NSMutableArray有70個對象,它們是NSMutableDictionary,每個字典裏面我有2個值:「distance」和「indexPath」。我想從小距離到最大排序NSMutableArray。距離是KM和陣列看起來像這樣利用我粘貼在這裏的代碼之後:使用字典鍵的值對包含NSMutableDictionary的NSMutableArray進行排序

NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"distance" ascending:YES]; 
[branchDistance sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]]; 

這是這種方法的結果:

(lldb) po [branchDistance objectAtIndex:0] 
(id) $1 = 0x0d6ac240 { 
    "<NSIndexPath 0xd6cf180> 1 indexes [0]" = indexPath; 
    "8.078547" = distance; 
} 
(lldb) po [branchDistance objectAtIndex:1] 
(id) $2 = 0x0d6a64a0 { 
    "<NSIndexPath 0xd6cf3b0> 1 indexes [1]" = indexPath; 
    "45.044069" = distance; 
} 
(lldb) po [bran(lldb) po [branchDistance objectAtIndex:2] 
(id) $4 = 0x0d6cf550 { 
    "<NSIndexPath 0xd69b3f0> 1 indexes [2]" = indexPath; 
    "9.992081" = distance; 
} 
(lldb) po [branchDistance objectAtIndex:3] 
(id) $5 = 0x0d6cf750 { 
    "283.356727" = distance; 
    "<NSIndexPath 0xd6cf480> 1 indexes [3]" = indexPath; 
} 

我想從該NSMutableArray排序小號到大號,使用這個「距離」鍵值在NSMutableDictionary以內。我嘗試了一些來自web和stackoverflow的代碼,但找不到適合我的東西。

請幫幫我!

謝謝!

回答

5

我假設的距離值存儲在使用NSNumber對象字典:

NSArray *sortedArray = [branchDistance sortedArrayUsingComparator:^(id obj1, id obj2) { 
    NSNumber *distance1 = [(NSDictionary *)obj1 objectForKey:@"distance"]; 
    NSNumber *distance2 = [(NSDictionary *)obj2 objectForKey:@"distance"]; 
    return [distance1 compare:distance2]; 
}]; 
+0

謝謝您的回答,但它不工作時,'sortedArray'仍然是一樣的branchDistance。 –

+0

@YossiTsafar請確認距離的存儲方式。它使用'NSNumber'還是使用'NSString'?如果後者使用前者則更容易使用。 – trojanfoe

+0

現在工作很好,謝謝! –

相關問題