如何快速迭代NSDictionary

时间:2016-01-15 14:45:36

标签: swift nsdictionary

是否可以按特定顺序迭代NSDictionary,以便根据最初输入数据的顺序在CoreData中保存键值对的索引?即在下面的代码中,集合1的索引为1,设置为2 - 2并设置为3 - 3而不是随机,正常的NSDictionary行为是什么?如果有人可以提供解决方案,或者告诉我它不可能,请提前致谢!

{{1}}

1 个答案:

答案 0 :(得分:0)

在您的示例中,您的密钥恰好以字母数字顺序添加。这可能是偶然的,但如果您打算按键排序顺序获取数据,那么这与创建顺序的请求不同,并且很容易做到:

XXX some chars YYY

另一方面,如果您只想使用创建顺序,并且不需要通过其键访问元素,则可以将结构声明为元组数组:

for (key,wordlist) in lists.sort({$0.0 < $1.0})
{
  // you will be getting the dictionary entries in key order
}

// trickier to access by index though
let aKey      = lists.keys.sort()[2]
let aWordList = lists[aKey]
// but it lets you get the wordlist from the key
let S1L3Words  = lists["Set 1: List 3"]

最后,如果你根本不需要密钥,你可以把它变成一个数组:

 let lists: [(String, [String])] =
            [
             ("Set 1: List 1", string1),
             ("Set 1: List 2", string2),
             ("Set 1: List 3", string3)
            ]

 // your for loop will get them in the same order

 for (key,wordlist) in lists 
 {
    // array order, no matter what the key values are
 }
 // also accessible directly by index
 let (aKey, aWordList) = lists[2] // ("Set 1: List 3", ["made", "came", "same"])