Swift NSUserDefaults不保存字典?
发布时间:2020-12-14 05:53:07 所属栏目:百科 来源:网络整理
导读:我有以下测试代码: func testSaveDictionary() { let userDefaults = NSUserDefaults.standardUserDefaults() var jo = [ "a" : "1.0","b" : "2.0" ] let akey = "aKey" userDefaults.setObject(jo,forKey: akey) var isOk = userDefaults.synchronize() va
我有以下测试代码:
func testSaveDictionary() { let userDefaults = NSUserDefaults.standardUserDefaults() var jo = [ "a" : "1.0","b" : "2.0" ] let akey = "aKey" userDefaults.setObject(jo,forKey: akey) var isOk = userDefaults.synchronize() var data0 = userDefaults.dictionaryForKey(akey) println(data0) } println(data0)的输出为零。 我的代码有什么问题吗? Swift Dictionary是现在还是在最终版本中列出属性列表?
更新Swift 2,Xcode 7:as @atxe注意到,NSUserDefaults字典现在映射为[String,AnyObject]。这是一个
Objective-C“轻量级泛型”的后果 将Objective-C方法声明为 - (NSDictionary<NSString *,id> *)dictionaryForKey:(NSString *)defaultName (默认对象必须是属性列表,特别是字典 另一方面,如果可能的话,Swift字典将自动桥接,所以来自问题的原始代码(再次): let jo = [ "a" : "1.0","b" : "2.0" ] let akey = "aKey" // Swift 2: userDefaults.setObject(jo,forKey: akey) // Swift 3: userDefaults.set(jo,forKey: akey) Swift 1.2的原始答案: var jo : [NSObject : AnyObject] = [ "a" : "1.0","b" : "2.0" ] userDefaults.setObject(jo,forKey: akey) var isOk = userDefaults.synchronize() 并注意,dictionaryForKey()返回一个可选的,所以你应该检查它 if let data0 = userDefaults.dictionaryForKey(akey) { println(data0) } else { println("not set") } // Output: [b: 2.0,a: 1.0] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |