Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Swift NSUserDefaults不保存字典?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我有以下测试代码: func testSaveDictionary() { let userDefaults = NSUserDefaults.standardUserDefaults() var jo = [ "a" : "1.0", "b" : "2.0" ] let akey = "aKey" userDefaults.set
@H_874_13@
@L_607_0@以下测试代码
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]。这是一个 @H_675_25@Objective-C“轻量级泛型”的后果 @H_675_25@将Objective-C方法声明为
- (NSDictionary<NSString *,id> *)DictionaryForKey:(NSString *)defaultName

(认对象必须是属性列表,特别是字典@H_675_25@键只能是字符串。)

另一方面,如果可能的话,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的原始答案:@H_675_25@用户认值可以存储NSDictionary对象。这些映射到Swift@H_675_25@as [NSObject:AnyObject]:

var jo : [NSObject : AnyObject] = [
    "a" : "1.0","b" : "2.0"
] 
userDefaults.setObject(jo,forKey: akey)
var isOk = userDefaults.synchronize()

并注意,DictionaryForKey()返回一个可选的,所以你应该检查它@H_675_25@例如使用可选的分配:

if let data0 = userDefaults.DictionaryForKey(akey) {
    println(data0)
} else {
    println("not set")
}

// Output: [b: 2.0,a: 1.0]

大佬总结

以上是大佬教程为你收集整理的Swift NSUserDefaults不保存字典?全部内容,希望文章能够帮你解决Swift NSUserDefaults不保存字典?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。