在swift中存储字典永久存储

时间:2015-02-22 19:35:55

标签: swift storage permanent

此代码在运行应用程序时抛出错误

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)

这有什么问题?

2 个答案:

答案 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")