2014-10-28 82 views
1

我有一個包含像這樣的信息的NSMutableDictionary檢索字典鍵的有序陣列基於對象的值

Key="Blue" [email protected][@1, @33] 
Key="Red" [email protected][@5, @33] 
Key="Green" [email protected][@4, @33] 
Key="Pink" [email protected][@2, @33] 
Key="Purple" [email protected][@3, @33] 

我想第一對象來獲取鍵的數組後面,在排序在Value數組中。因此,在我上面的例子,我想這個排序的數組:

藍色,粉紅色,紫色,綠色,紅色

任何想法如何做到這一點?

+0

我一直在使用SortDescriptors嘗試過但沒有得到我在任何地方 – 2014-10-28 22:36:45

+0

你應該總是張貼自己的嘗試(收費)的問題,讓人們知道你已經努力事先研究這個問題。否則,它會有作業的味道。 – 2014-10-28 22:38:57

回答

2

使用keysSortedByValueUsingComparator

NSDictionary *dict = 
@{ 
    @"Blue": @[ @1, @33 ], 
    @"Red": @[ @5, @33 ], 
    @"Green": @[ @4, @33 ], 
    @"Pink": @[ @2, @33 ], 
    @"Purple": @[ @3, @33 ] 
    }; 

NSArray *sorted = [dict keysSortedByValueUsingComparator:^NSComparisonResult(id obj1, id obj2) { 
    return [[obj1 firstObject] compare:[obj2 firstObject]]; 
}]; 

NSLog(@"%@", sorted); 

輸出:

2014-10-28 23:37:34.267 Temp[62789:3909211] (
    Blue, 
    Pink, 
    Purple, 
    Green, 
    Red 
) 
+0

不,使用'>'是錯誤的,只有當對象指針恰好與實際數字值的順序相同時纔有效。這可能是真的,因爲值爲0-12的'NSNumber'對象是常量。 – rmaddy 2014-10-28 22:42:24