如何按输入顺序输出字典的值。
示例:
我的输入:
[dicValue0 setObject:@"Start Date & Time" forKey:@"START_DATETIME"];
[dicValue0 setObject:@"Specify End" forKey:@"SPECIFY_END"];
[dicValue0 setObject:@"End Date & Time" forKey:@"END_DATETIME"];
[dicValue0 setObject:@"Open End" forKey:@"END_OPEN"];
输出:
我知道如何dictionary works,但我希望输出与输入的顺序相同!
我可以编写一个循环,按输入顺序对输出进行排序。但是,如果我有超过10000个值,这不是最好的和高效的方式。 有什么来自苹果,这有助于我解决这个问题吗?
答案 0 :(得分:5)
您应该创建一个数组来跟踪插入的键的顺序,然后迭代它以从字典中提取值。在Foundation中没有内置的方法来获得有序字典。
答案 1 :(得分:3)
我很确定词典没有跟踪输入顺序。你如何输出字典,循环键或只打印字典?
如果你知道要检索对象的顺序,你可以创建自己的keys数组版本并循环遍历它以按照你想要的顺序从字典中提取对象
答案 2 :(得分:2)
如果您想了解如何创建有序词典的示例,请点击此处:http://cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html
答案 3 :(得分:1)
您可以查看这篇文章(包含源代码) -
OrderedDictionary: Subclassing a Cocoa class cluster,Matt Gallagher