NSDictionary的密钥顺序是否保证与初始化相同,如果它永远不会改变?

Tha*_*rin 6 iphone cocoa objective-c nsdictionary

我遇到了与这个问题相同的问题.但是,我有一个后续问题.我似乎与原始提问者的情况相同:我有一个带有字典层次结构的plist,用于定义配置屏幕.这些是不是可变的,留在整个应用程序相同.由于最初的讨论似乎集中在改变字典引起的问题,我必须要求确认:字典的顺序是否保证与plist中的相同,即读取时(使用initWithContentsOfFile)?如果字典永远不会改变,我可以在这种情况下使用allKeys来获得正确的键序列吗?

dre*_*lax 8

不,密钥不太可能以与plist文件相同的顺序出现.我无法深入了解,但我猜测按键是以任何提供高效查找的方式排序的.文档说明allKeys没有定义数组中元素的顺序.


Dav*_*ong 7

如果您需要NSDictionary维护订单,请查看CHDataStructureCHOrderedDictionary,它就是这样做的.我用它所有的时间.