此代码在运行应用程序时抛出错误
var dic :[NSObject: AnyObject] = ["name":"steph" , "status": "unemployed"]
NSUserDefaults.standardUserDefaults().setObject(array, forKey: "diction")
var retrievedDict = NSUserDefaults.standardUserDefaults().objectForKey("diction")! as NSDictionary
let g = dic["name"]
println(g)
这有什么问题?
答案 0 :(得分:2)
问题是Dictionary键必须是String。因此,不必声明它[NSObject:AnyObject],而是必须将其声明为[String:AnyObject]。你也试图从dic加载它,但你必须从retrieveDict加载它。
更新: Xcode 7.2•Swift 2.1.1
let dic:[String: AnyObject] = ["name":"steph" , "status": "unemployed"]
NSUserDefaults().setObject(dic, forKey: "diction")
if let retrievedDict = NSUserDefaults().dictionaryForKey("diction") {
if let g = retrievedDict["name"] as? String {
print(g)
}
}
答案 1 :(得分:0)
你的代码很好。您唯一的问题是,您将错误的对象传递给NSUserDefaults
。您应该传递dic
而不是array
。
所以改变一下:
NSUserDefaults.standardUserDefaults().setObject(array, forKey: "diction")
到那个:
NSUserDefaults.standardUserDefaults().setObject(dic, forKey: "diction")