我的意思是:NSDictionary中的键和值的顺序是否始终与初始化NSDictionary时的指定顺序相同?或者,如果我真的需要知道键的顺序,我应该更好地保持单独的NSArray吗?
答案 0 :(得分:18)
不,他们没有订购。只要您不添加或删除字典中的任何元素,它们将保持相同的顺序,但只要添加或删除元素,新订单就会完全不同。
如果您需要订购键/值,请使用NSArray(或其他一些有序数据结构)。
答案 1 :(得分:3)
NSDictionary键&值未订购。你的选择:
答案 2 :(得分:3)
Matt Gallagher撰写了一篇名为“OrderedDictionary: Subclassing a Cocoa class cluster”的博客文章,内容正是这个问题,并附有示例代码。
答案 3 :(得分:1)
密钥永远不会保证是相同的顺序。如果可以比较密钥(我假设它们可以给出您的问题),那么如果您需要按排序顺序访问密钥,则可以随时对它们进行排序。
您需要先将数据键读入数组,然后对数组进行排序。
答案 4 :(得分:1)
根据Apple's reference,NSDictionary基本上是哈希表的包装器。所以不,他们不能保证任何特定的顺序。
答案 5 :(得分:1)
事实上,即使它是完全相同的程序和完全相同的操作系统版本,在两个不同的设备上运行程序时,您甚至不能依赖于相同的顺序。
例如,如果您在iPad Air上运行程序,NSDictionary内部元素的排序可能与在iPad Retina上运行相同程序时的顺序不同,即使iOS版本完全相同。
简而言之,绝不能依赖NSDictionary中元素的顺序。您必须始终假设它们可能处于任何未指定的顺序,在不同的设备上可能会有所不同。