【问题标题】:How do I save a custom class in swift to NSUserDefaults? [duplicate]如何将自定义类快速保存到 NSUserDefaults? [复制]
【发布时间】:2016-01-16 19:00:33
【问题描述】:

我已经创建了一个名为 test 的自定义类。我做了一个名为“游戏”的变量等于测试。我试图将“游戏”保存到 NSUserDefaults 并尝试从“游戏”中打印值。运行项目后出现错误:“线程 1:信号 SIGABRT”。如何在不出现此错误的情况下将自定义对象保存到 NSUserDefaults?

这是我的课:

class Test {
    var boolean = false
    var int = 1
    var arr = ["one": 1]
}

这是我的保存代码:

    let defaults = NSUserDefaults.standardUserDefaults()

    let game = Test()

    game.arr = ["two": 3]
    game.hi = true
    game.int = 100

    defaults.setObject(game, forKey: "SG")

    let gameSet = defaults.objectForKey("SG")! as! Test

    print(gameSet.int)
    print(gameSet.boolean)
    print(gameSet.arr["one"])

这一切都在 viewDidLoad 方法中。排除测试类。

【问题讨论】:

  • 您需要使您的类 NSCoding 兼容并使用 NSKeyedArchiver 转换为 NSData,然后再保存到 NSUserDefaults 或保存到 plist 文件中
  • @leo-dabus,如果我不想使用 NSObject 作为超类怎么办?
  • 你的arr 属性也是字典,而不是数组

标签: ios swift nsuserdefaults


【解决方案1】:

From the documentation:

value 参数只能是属性列表对象:NSData、NSString、NSNumber、NSDate、NSArray 或 NSDictionary。

你会想看看使用NSKeyedArchiver 来代替自定义对象。

【讨论】:

    猜你喜欢
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多