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 中元素的位置,您可以尝试以下方法或提出自己的数据结构

您可以像这样使用Arraykey-value 对-> [[String : AnyObject]]。 看起来像:[["New" : 1],["In Progress" : 3],...]

您也可以像这样在Array 中使用keyvalue 的元组 -> [(key,value)] 看起来像:[("New" , 1),("In Progress" , 3),...]

【讨论】:

【参考方案3】:

尝试获取此数组中的键

 NSArray *orderedArr =  [[dict allKeys] sortedArrayUsingSelector:@selector(localizedStandardCompare:)];

【讨论】:

以上是关于NSMutableDictionary 按顺序添加对象问题的主要内容,如果未能解决你的问题,请参考以下文章

按字典键的值对包含 NSMutableDictionary 的 NSMutableArray 进行排序

NSMutableDictionary怎么排序

如何将 NSArray 添加为 NSMutableDictionary 的 NSMutableDictionary 键?

NSMutableDictionary 正在为键和值添加引号 - 为啥?

通过 UITableView 从 NSMutableDictionary 添加/删除项目

如何将字段添加到 NSMutableDictionary Swift [重复]