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