2011-03-17 36 views
1

我有這樣的問題。 我的NSMutableDictionaryNSMutableDictionary和NSArray

Object 10   Key 1 
Object 20   Key 2 
Object 30   Key 3 
Object 40   Key 4 
Object 50   Key 5 

然後,我有代碼

NSArray*currentArray=[currentMutableDictionary allValues]; 

當我輸出電流陣列我有 價值

20 
50 
30 
10 
40 

如何我可以從字典中正確添加obects數組爲了?

感謝您的回答。

+0

你的意思是「按照正確的順序」是什麼意思?按鍵升序排列?在你的例子中,鍵恰好是1,2,3,4,5;在你的實際代碼中,它們可以是任意的嗎? (如果沒有,你可能會考慮一個字典是否真的是正確的數據結構!) – 2011-03-17 14:17:32

回答

0

你可以讓一個NSMutableArray代替,並添加迭代它的使用addObjectAtIndex方法的對象

+0

這是(可能)效率比我的答案.... – 2011-03-17 14:17:44

2

嘗試了這一點:

NSInteger intSort(id num1, id num2, void *context) 
{ 
    int v1 = [num1 intValue]; 
    int v2 = [num2 intValue]; 
    if (v1 < v2) 
     return NSOrderedAscending; 
    else if (v1 > v2) 
     return NSOrderedDescending; 
    else 
     return NSOrderedSame; 
} 

NSArray *currentArray = [[currentMutableDictionary allValues] sortedArrayUsingFunction:intSort context:nil]; 

這應該陣列正確排序,假設你在你的字典中的NSNumber對象。

+0

Upvoted因爲你擊敗了我! – 2011-03-17 14:18:05

+0

直接從文檔也:) – 2011-03-17 14:18:45

+0

按值排序對象,而不是按鍵。我不知道安東想要什麼。 – 2011-03-17 14:22:16

0

您可以使用keysSortedByValueUsingComparator以排序順序提取密鑰,然後創建一個可變陣列將值放入,並使用objectsForKeys:notFoundMarker:提取它們。

+0

這樣可以避免你希望你的對象按字典排序而不是它們的值。如果你希望他們按價值排序,那麼就去理查德·羅斯三世的建議,並用'allValues'把它們拉出來,然後對它們進行分類。 – 2011-03-17 14:25:29

相關問題