将 swift 中的字典存储在永久存储中

Storing a dictionary in swift in permanent storage

当我 运行 应用程序

时,此代码会抛出错误
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)

这有什么问题?

问题是字典键必须是字符串。因此,与其将其声明为 [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)
    }
}

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

所以改变一下:

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

到那个:

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