是键和值在一个NSDictionary有序?(Are keys and values in an N

2019-06-18 13:35发布

我的意思是:是键和值的一个NSDictionary总是为了同样喜欢他们是如何初始化的NSDictionary时指定? 或者我应该更好地维护一个单独的NSArray如果我真的需要知道键的顺序?

Answer 1:

不,他们是没有顺序的。 只要你不添加或从词典中删除的任何元素,他们将保持在相同的顺序,但只要您添加或删除元素,新的订单将是完全不同的。

如果您需要的键/值进行排序,使用一个NSArray(或其他有序的数据结构)来代替。



Answer 2:

的NSDictionary键和值是无序的。 您的选择:

  • 保持按键的一个单独的数组中你想要的顺序
  • 写或找到现有类是上面的包装
  • 写或发现的NSDictionary的现有子类,增加了API进行排序


Answer 3:

马特·加拉格尔写了题为博客文章“OrderedDictionary:子类可可类集群”涵盖正是这个问题,完整的示例代码。



Answer 4:

的NSDictionary,根据苹果公司的参考 ,基本上是围绕一个哈希表的包装。 所以,不,他们不能保证在任何特定的顺序。



Answer 5:

密钥永远不会保证访问一个NSDictionary时处于相同的顺序。 如果密钥可以比较(我假设他们可以给你的问题),那么你可以随时,如果你需要访问他们的排序顺序进行排序。

您需要通过读取钥匙到一个数组第一和排序过程的阵列来做到这一点。



Answer 6:

事实上,你甚至不能依靠的顺序,两个不同的设备上运行该程序时是相同的,即使是完全相同的程序和版本完全相同的操作系统。

例如,如果运行在iPad上航方案,里面的NSDictionary元素的顺序可能会在iPad上的Retina运行同一程序时不同,即使iOS版本是完全一样的。

总之,在NSDictionary中元素的顺序绝不能依靠。 你必须始终假定它们可以是任何未指定的顺序,这可能是在不同设备上的不同。



文章来源: Are keys and values in an NSDictionary ordered?