第二个数组项被删除
Second Array item gets removed
我正在从 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
.
中
您需要在 append
之后将 existingArr
保存回默认值。沿着:
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)
defaults.setObject(existingArr, forKey: "D")
}
} else {
defaults.setObject([nD.dayOfTheWeek], forKey: "D")
}
}
我正在从 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
.
您需要在 append
之后将 existingArr
保存回默认值。沿着:
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)
defaults.setObject(existingArr, forKey: "D")
}
} else {
defaults.setObject([nD.dayOfTheWeek], forKey: "D")
}
}