我要检查是否有NSUserDefaults的与dic
密钥的值,然后加载的数据,并保存到loadedDic
如果存在数据,或者设置的loadedDic
值如果不是,则保存到NSUserDefaults
。NSUserDefaults.standardUserDefaults()。dictionaryForKey()返回编译错误
与error!
注释语句返回一条错误消息:
不能分配
[String : AnyObject]?
类型的值[String : [String]]
我想因为该方法dictionaryForKey
的返回类型说AnyObject
它会好起来的。还是不完全了解这种AnyObject类型:(
任何人都可以向我解释什么使得错误,我应该怎么照顾这个问题致谢?提前。
下面的代码块是viewDidLoad()
方法。在UIViewController
类
var loadedDic = [String : [String]]()
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.dictionaryForKey("dic") != nil {
print("there's the value i want")
loadedDic = defaults.dictionaryForKey("dic")//error!
}else {
//some codes to set values of 'loadedDic'. this part works properly
defaults.setObject(loadedDic, forKey: "dic")
if defaults.synchronize(){
print("saved")
}
}
时不要使用'.synchronize()',这是过时的。只要你执行'.setObject',默认就已经被保存了。 – Moritz
只要调用'.setObject',就不会保存默认值。请参阅文档在这里:https://developer.apple.com/reference/foundation/userdefaults/1414005-synchronize – yuji