像输入一样订购NSMutableDictionary的输出

时间:2011-11-21 16:26:39

标签: objective-c ios xcode nsdictionary

如何按输入顺序输出字典的值。

示例:

我的输入:

    [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个值,这不是最好的和高效的方式。 有什么来自苹果,这有助于我解决这个问题吗?

4 个答案:

答案 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