将 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")
当我 运行 应用程序
时,此代码会抛出错误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")