我遇到了与找到in this question相同的问题。但是,我有一个后续问题。我似乎与原始提问者的情况相同:我有一个带有字典层次结构的plist,用于定义配置屏幕。这些不可变,将在整个应用程序中保持不变。由于最初的讨论似乎集中在改变字典引起的问题上,我必须要求确认:字典的顺序是否与plist中的字典顺序相同,即它是否被读取(使用initWithContentsOfFile)?如果字典永远不会改变,我可以在这种情况下使用allKeys获取正确的键序列吗?
答案 0 :(得分:8)
不,密钥不太可能与plist
文件的顺序相同。我无法深入了解,但我猜测按键是以任何提供高效查找的方式排序的。 allKeys
的文档说明没有定义数组中元素的顺序。
答案 1 :(得分:7)
如果您需要维护订单的NSDictionary
,请查看CHDataStructure's CHOrderedDictionary
,这正是如此。我一直都在使用它。
答案 2 :(得分:4)
我不会认为密钥会以任何顺序排列,因为allKeys
不保证订单。
在内部,NSDictionary
uses a hash table。
数组中元素的顺序 没有定义。
如果您想以某种顺序显示值,那么获取密钥,对密钥数组进行排序,然后获取每个密钥的值。
答案 3 :(得分:3)
保证订单没有任何。它甚至不能保证两次迭代字典会以相同的顺序为你提供密钥。