【发布时间】:2016-03-15 00:04:20
【问题描述】:
我正在从 CloudKit 中提取数据以放入一个数组中。
我有 3 个可以拉取的项目:Monday、Tuesday、Wednesday
我将它们放入existingArray,但是当我运行应用程序时,我得到:["Monday", "Tuesday"],然后当它第二次运行时我得到["Monday", "Wednesday"],我不知道为什么?
for days in results! {
let nD = DayClass()
nD.dayOfTheWeek = days[“D”] as! String
let defaults = NSUserDefaults.standardUserDefaults()
if var existingArr = defaults.arrayForKey("D") as? [String] {
if existingArr.contains(days["D"] as! String) == false {
existingArr.append(nd.dayOfTheWeek)
}
} else {
defaults.setObject([nD.dayOfTheWeek], forKey: "D")
}
}
编辑:如果我在追加后添加defaults.setObject([nD.dayOfTheWeek], forKey: "D"),existingArray 将变为["Monday", "Tuesday"] 然后["Tuesday", "Wednesday"]。我无法将所有 3 项都保留在 existingArray 中。
【问题讨论】:
-
如果
contains通过,那么您将一个元素附加到existingArr,但在循环的下一次迭代中您只需再次覆盖它。就代码而言,看起来你需要在append之后setObject。 -
如果我在
append之后添加defaults.setObject([nD.dayOfTheWeek], forKey: "D"),那么由于某种原因数组运行["Monday", "Tuesday"]然后["Tuesday", "Wednesday"]。我不能让它以某种方式将所有 3 个项目保留在数组中 -
你必须保存整个数组 -
defaults.setObject(existingArr, forKey: "D"). -
是的,我们开始了!如果您想将其作为答案,我可以将其标记为已解决?
标签: ios swift nsarray nsuserdefaults