【发布时间】:2016-01-15 14:45:35
【问题描述】:
是否可以按特定顺序遍历 NSDictionary,以便我可以根据最初键入数据的顺序在 CoreData 中保存键值对的索引?即在下面的代码中,Set 1 的索引为 1、set 2 - 2 和 set 3 - 3,而不是随机的,就像正常的 NSDictionary 行为一样?如果有人可以提供解决方案或告诉我这是不可能的,请提前感谢!
let string1 = "rain, wait, train".wordsInArray
let string2 = "oil, join, coin".wordsInArray
let string3 = "made, came, same".wordsInArray
let lists: [String: [String]] =
["Set 1: List 1": string1,
"Set 1: List 2": string2,
"Set 1: List 3": string3]
var index = 0
For list in lists {
list.listIndex = index
index = index + 1
coreDataStack.saveMainContext()
}
extension String {
var wordsInArray:[String] {
return componentsSeparatedByCharactersInSet(NSCharacterSet.punctuationCharacterSet()).joinWithSeparator("").componentsSeparatedByString(" ")
}
【问题讨论】:
-
字典是一个无序的集合。无法保证事情会保持相同的顺序,并且您派生的任何索引都可能不指向同一项目。如果你想保持秩序,最好使用数组。
-
绝对有可能,因为您已经定义了顺序,您唯一要做的就是将其保存在任何已订购的集合中并随意使用。当然,保持两个集合同步也很重要,这很容易出错,因此您可能需要重新考虑数据结构,并将现在的键作为对象的简单属性存储在单个有序集合中。
-
... 但是字典有唯一的键,所以你可以只记住字典中的键,而不是记住索引。并且内置的迭代器会给你键值对,所以很容易记住你感兴趣的一个键。
-
嗨@A-Live - 我如何将其保存为有序集合?
标签: swift nsdictionary