复制数组中已有的项目
Duplicating items already in array
每次我 运行 应用程序,然后重新 运行 它时,即使它已经存在,它也会将相同的项目保存到 NSUserDefaults
中。
我试图用 contains
代码解决这个问题,但没有成功。
我错过了什么?
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")
}
}
Every time I run the app, and then re-run it, it saves the same items into the NSUserDefaults even if it is already there.
是的,因为这正是您的代码所做的:
defaults.setObject(existingArr, forKey: "D")
但是existingArr
是什么?这是您之前加载的默认值:
if var existingArr = NSUserDefaults.standardUserDefaults().arrayForKey("D") as? [String]
所以当你进入.contains
分支时,你总是做同样的操作:你保存现有的数组。
与您在代码中的评论所述相反,您没有向该块中的任何数组附加任何内容,而是保存现有数组。
每次我 运行 应用程序,然后重新 运行 它时,即使它已经存在,它也会将相同的项目保存到 NSUserDefaults
中。
我试图用 contains
代码解决这个问题,但没有成功。
我错过了什么?
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")
}
}
Every time I run the app, and then re-run it, it saves the same items into the NSUserDefaults even if it is already there.
是的,因为这正是您的代码所做的:
defaults.setObject(existingArr, forKey: "D")
但是existingArr
是什么?这是您之前加载的默认值:
if var existingArr = NSUserDefaults.standardUserDefaults().arrayForKey("D") as? [String]
所以当你进入.contains
分支时,你总是做同样的操作:你保存现有的数组。
与您在代码中的评论所述相反,您没有向该块中的任何数组附加任何内容,而是保存现有数组。