【问题标题】:enumerateKeysAndObjectsUsingBlock - order of entries in dictionary?enumerateKeysAndObjectsUsingBlock - 字典中的条目顺序?
【发布时间】:2013-05-08 14:10:11
【问题描述】:

有谁知道在 NSDictionary 上使用 enumerateKeysAndObjectsUsingBlock 的枚举顺序是否已定义?我的实验表明它与添加东西的顺序相同,但我不能 100% 确定并且我不希望它破坏......在任何地方都找不到任何可以告诉我的东西。

【问题讨论】:

  • 无论如何不能保证顺序,但要保留 dict 对象的顺序,您可以添加一个名为 orderIndex 的附加键并按 orderIndex 对您的 dict 进行排序,其他选项是使用 NSOrderSet 但它不会允许重复值

标签: objective-c nsdictionary enumerate


【解决方案1】:

根本没有定义顺序。这就是集合的行为方式,而字典非常接近秒...

为了确保保持顺序,您使用了一个可排序的属性,当您获得键时,对结果数组进行排序

或者使用 OrderedDictionary .... 在 google 上有一些实现,但基本上它只是一个 NSDictionary + 一个 NSArray,键的顺序是稳定的

可可头的好作品

https://github.com/davedelong/CHDataStructures/blob/master/source/CHOrderedDictionary.h https://github.com/davedelong/CHDataStructures/blob/master/source/CHOrderedDictionary.m

【讨论】:

  • 谢谢你(并且很抱歉迟到接受 - 离开了) - 我有点得出同样的结论,并打算自己写,但我会看看 OrderedDictionary .
猜你喜欢
  • 2013-08-21
  • 1970-01-01
  • 2010-12-24
  • 2019-09-18
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
相关资源
最近更新 更多