我有以下测试代码:
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 2,Xcode 7:as @atxe注意到,NSUserDefaults字典现在映射为[String,AnyObject]。这是一个
Objective-C“轻量级泛型”的后果
将Objective-C方法声明为
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的原始答案:
用户默认值可以存储NSDictionary对象。这些映射到Swift
as [NSObject:AnyObject]:
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]
原文地址:https://www.jb51.cc/swift/320450.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。