1

当我运行应用程序时,这里的代码会引发错误

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)

这有什么问题?

4

2 回答 2

2

问题是字典键必须是字符串。因此,您不必将其声明为 [NSObject: AnyObject],而必须将其声明为 [String: AnyObject]。此外,您正尝试从 dic 加载它,但您必须从 retrievedDict 加载它。

更新: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)
    }
}
于 2015-02-22T19:42:07.697 回答
0

你的代码很好。您唯一的问题是,您将错误的对象传递给您的NSUserDefaults. 你应该通过dic而不是array

所以改变它:

NSUserDefaults.standardUserDefaults().setObject(array, forKey: "diction")

对此:

NSUserDefaults.standardUserDefaults().setObject(dic, forKey: "diction")
于 2015-02-22T19:48:03.990 回答