我創建了一個NSDictionary,我把那裏幾個對象和鍵。但問題在於按鍵的首字母理解,按鍵排序。例如,我把「G」,「B」,「C」。因此它將它們排序並顯示爲「B」,「C」,「G」。我想禁用排序,我怎麼能做到這一點。我正在處理更復雜的示例,但我希望在我的問題中保持簡單。 問題:如何禁用NSDictionary中的排序或我怎麼能自己排序NSDictionary?禁用排序的NSDictionary
在此先感謝!
我創建了一個NSDictionary,我把那裏幾個對象和鍵。但問題在於按鍵的首字母理解,按鍵排序。例如,我把「G」,「B」,「C」。因此它將它們排序並顯示爲「B」,「C」,「G」。我想禁用排序,我怎麼能做到這一點。我正在處理更復雜的示例,但我希望在我的問題中保持簡單。 問題:如何禁用NSDictionary中的排序或我怎麼能自己排序NSDictionary?禁用排序的NSDictionary
在此先感謝!
正如由@丹˚F指出,NSDictionary的不排序它的條目。正如@Hot Licks的評論所述,NSDictionary以任意順序放置其內容。你不應該假設字典中條目的順序。 NSArray更適合這種事情。
如果你真的想要顯示字典的內容在一些預先定義的排序順序,您可以使用它們相關聯的值獲取排序的鍵的數組。 NSDictionary類有支持這個的方法keysSortedByValueUsingSelector:
和keysSortedByValueUsingComparator:
。所以,如果你想用值進行排序升序排列,你可以實現控制的顯示順序做這樣的事情:
NSArray *orderedKeys = [myDictionary keysSortedByUsingSelector:@selector(caseInsensitiveCompare:)];
for (int i = 0; i < [sortedKeys count]; i++) {
NSString *key = [sortedKeys objectAtIndex:i];
NSLog(@"%@ = %@", key, [myDictionary objectForKey:key]);
}
結果應該顯示在字典中的每個條目,每個條目中的值進行排序。
「排序」是不是一個NSDictionary
知道,如果你想要的數據是在一個特定的順序,你應該用一個NSArray
代替
他們沒有排序,他們只是在一個任意的順序。對於所有意圖和目的而言,這是隨機的,並且可以從一個呼叫改變到另一個呼叫。 – 2012-07-10 19:29:39
[停止NSDictionary排序其項目]的可能的重複(http://stackoverflow.com/questions/9797621/stop-nsdictionary-from-sorting-its-items) – 2012-07-10 20:10:50
'NSDictionary'不提供任何排序默認情況下。如果你想在內部對你的NSDictionary鍵進行排序,請查看[** NSDictionary with ordered keys **](http://stackoverflow.com/questions/376090/nsdictionary-with-ordered-keys)。 – mopsled 2012-07-10 20:11:25