【发布时间】:2016-03-14 21:51:29
【问题描述】:
每次我运行应用程序,然后重新运行它,它会将相同的项目保存到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")
}
}
【问题讨论】:
-
您能否提供更多有关您尝试使用该数组做什么的信息。
-
维克多,你不应该使用 defaults.synchronize()。 “所以是的,长话短说,不要在 iOS 8 及更高版本中使用同步。” -codingexplorer.com/nsuserdefaults-a-swift-introduction 此外,您应该尝试只在项目顶部定义一次默认值(让默认值 =...)。
-
@JohnRamos 好的,谢谢!我改变了它,它仍然在做同样的事情。但也许您更多的是查看格式提示等,谢谢。
-
@Cing 例如,我正在从 API 中提取“星期几”。它恰好拉星期一,把它放在数组中。然后当我第二次运行该应用程序时,它会再次拉取星期一,并再次将其放入数组中;我想要的是看看星期一是否已经在数组中,不要再把它放在那里。有道理吗?谢谢!
-
@JohnRamos 我更新了格式和代码!
标签: ios swift nsarray nsuserdefaults