Ios 如何在swift中将自定义类保存为NSUserDefaults?

Ios 如何在swift中将自定义类保存为NSUserDefaults?,ios,swift,nsuserdefaults,Ios,Swift,Nsuserdefaults,我创建了一个名为test的自定义类。我让一个叫做“game”的变量等于test。我试图将“游戏”保存到NSUserDefaults,并试图打印“游戏”中的值。在运行项目之后,我得到了一个错误:“线程1:SIGABRT信号”。如何将自定义对象保存到NSUserDefaults而不出现此错误 这是我的班级: class Test { var boolean = false var int = 1 var arr = ["one": 1] } 这是我的保存代码: le

我创建了一个名为test的自定义类。我让一个叫做“game”的变量等于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方法中。不包括测试类

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


您将希望使用
NSKeyedArchiver
来代替自定义对象。

您需要使您的类符合NSCoding,并使用NSKeyedArchiver在保存为NSUserDefaults或将其保存为plist之前转换为NSDatafile@leo-达布斯,如果我不想使用NSObject作为超类呢?还有你的
arr
属性它是一个字典,而不是数组