NSMutableDictionary 按顺序添加对象问题
Posted
技术标签:
【中文标题】NSMutableDictionary 按顺序添加对象问题【英文标题】:NSMutableDictionary add object by sequence issue 【发布时间】:2017-10-31 10:33:43 【问题描述】:我通过键在 NSMutableDictionary 中添加了序列 这是字典的键
New,
To Do,
Basic,
Advanced,
In Progress,
Done
但是当我打印 NSMutableDictionary 所有键时,输出不同
Advanced,
In Progress,
To Do,
New,
Done,
Basic
有什么解决办法吗?
【问题讨论】:
字典中的顺序无法保证,因为您使用键而不是索引访问/设置元素。 是的,我知道我们没有为此设置订单,如果您有任何其他解决方案,请告诉我。 使用数组?你到底想保存/做什么?目的是什么? 用户数组对我来说是最后的选择,但我正在寻找其他解决方案。 【参考方案1】:字典是无序的集合。项目的顺序无法保证,也不会被保留。不要对从字典中获取的订单对象做任何假设。它没有具体说明,可能会发生变化。
如果您需要有序集合,请尝试使用单元素字典数组或具有键和值属性的自定义对象数组。
【讨论】:
【参考方案2】:如果您担心Dictionary
中元素的位置,您可以尝试以下方法或提出自己的数据结构
您可以像这样使用Array
或key-value
对-> [[String : AnyObject]]
。
看起来像:[["New" : 1],["In Progress" : 3],...]
您也可以像这样在Array
中使用key
和value
的元组 -> [(key,value)]
看起来像:[("New" , 1),("In Progress" , 3),...]
【讨论】:
【参考方案3】:尝试获取此数组中的键
NSArray *orderedArr = [[dict allKeys] sortedArrayUsingSelector:@selector(localizedStandardCompare:)];
【讨论】:
以上是关于NSMutableDictionary 按顺序添加对象问题的主要内容,如果未能解决你的问题,请参考以下文章
按字典键的值对包含 NSMutableDictionary 的 NSMutableArray 进行排序
如何将 NSArray 添加为 NSMutableDictionary 的 NSMutableDictionary 键?
NSMutableDictionary 正在为键和值添加引号 - 为啥?