【发布时间】:2016-03-13 18:06:45
【问题描述】:
我正在尝试评估一个项目是否已经在 existingArr 中,这样我就不会多次添加它。
但是当我尝试评估 existingArr 是否已经包含一个项目时,我不断收到错误“无法将 String 类型的值转换为预期的参数类型 @noescape (AnyObject) throws -> Bool”,在这一行 @987654323 @在:
for days in results! {
let nD = DayClass()
nD.dayOfTheWeek = days[“D”] as! String
//check if there is already an existing Day array in prefs
if var existingArr = NSUserDefaults.standardUserDefaults().arrayForKey("D") {
//if so append the new value to that array and store it
if existingArr.contains(nD.dayOfTheWeek) == false {
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(existingArr, forKey: "D")
defaults.synchronize()
}
} else {
//create a new array and store it
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject([nD.dayOfTheWeek], forKey: "D")
defaults.synchronize()
}
}
我对它试图告诉我的内容有一个大致的了解,但还不足以真正弄清楚。非常感谢任何帮助。
【问题讨论】:
-
您可能需要
registerDefaults为用户默认值,以确保“D”的对象是一个数组,然后再检索它。 -
他用
if var existingArr = NSUserDefaults.standardUserDefaults().arrayForKey("D")做到了这一点,尽管看起来他应该在转换为String之前检查days[“D”]是否存在
标签: ios swift nsarray nsuserdefaults