我想检查 NSUserDefaults 是否有 dic
键的值,如果存在则加载数据并保存到 loadedDic
中,或者设置值loadedDic
并保存到 NSUserDefaults
(如果没有)。
用 error!
注释的语句返回错误消息:
cannot assign value of type
[String : AnyObject]?
to[String : [String]]
我认为这应该没问题,因为方法 dictionaryForKey
的返回类型为 AnyObject
。还是没有完全理解这个 AnyObject 类型:(
谁能向我解释一下错误的原因以及我应该如何解决这个问题?提前致谢。
以下代码块位于 UIViewController
类的 viewDidLoad()
方法中。
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")
}
}
最佳答案
检查从 NSUserDefaults
接收到的字典类型是否为预期类型:
if defaults.dictionaryForKey("dic") != nil {
print("there's the value i want")
if let dic = defaults.dictionaryForKey("dic") as? [String : [String]]{
loadedDic = dic
}
}
关于ios - NSUserDefaults.standardUserDefaults().dictionaryForKey() 返回编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38583117/