我需要一個NSDictionary
對象,它不僅支持key-> value存儲,而且還像Array一樣支持key
序列。使用訂單支持創建NSDictionary
Objective-C上是否存在某些東西?
我需要一個NSDictionary
對象,它不僅支持key-> value存儲,而且還像Array一樣支持key
序列。使用訂單支持創建NSDictionary
Objective-C上是否存在某些東西?
Monolo的回答是正確的做法。
[self allKeys]
不返回有序的序列。這是一種NSSet
風格。
,我寫了一個名爲PLHash
類,有以下特點:
這裏是URL https://github.com/xhan/PlutoLand/blob/master/PlutoLand/Additions/PLHash.h
沒有內置內容,但是您可以在字典旁邊使用一組鍵來記錄順序。
我發現這篇文章(和鏈接的源代碼)有用:http://cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html
你最好關閉或者獲得allkeys陣列和分選,然後獲取值的鍵或使自己的類來存儲反對你想要的方式。這聽起來像你正在做的NSDictionary真的不是做的,你想做什麼,你想要的鍵排序?
一種選擇是在nsdictionary上創建一個類別,將其稱爲sortedKeys或其他,它返回一個排序後的[self allKeys]。
更新:現在,我沒有從我的電話響應,這是我的建議,爲了清楚冗長寫的,假設你使用ARC:
@interface NSDictionary (sort)
- (NSArray *)sortedKeys;
@end
@implementation NSDictionary (sort)
- (NSArray *)sortedKeys {
NSArray *keyArray = [self allKeys];
NSArray *sortedKeyArray = [keyarray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
return sortedKeyArray;
}
@end
我個人不認爲子類的NSDictionary是要走的路。