如何将 swift 中的自定义 class 保存到 NSUserDefaults?
How do I save a custom class in swift to NSUserDefaults?
我做了一个自定义 class 叫做测试。我做了一个名为 "game" 的变量等于测试。我尝试将 "game" 保存到 NSUserDefaults 并尝试打印 "game" 中的值。在 运行 项目之后我得到一个错误:"Thread 1:signal SIGABRT"。如何将我的自定义对象保存到 NSUserDefaults 而不会出现此错误?
这是我的 class:
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方法中。不包括测试 class。
The value parameter can be only property list objects: NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary.
您需要考虑使用 NSKeyedArchiver
代替自定义对象。
我做了一个自定义 class 叫做测试。我做了一个名为 "game" 的变量等于测试。我尝试将 "game" 保存到 NSUserDefaults 并尝试打印 "game" 中的值。在 运行 项目之后我得到一个错误:"Thread 1:signal SIGABRT"。如何将我的自定义对象保存到 NSUserDefaults 而不会出现此错误?
这是我的 class:
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方法中。不包括测试 class。
The value parameter can be only property list objects: NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary.
您需要考虑使用 NSKeyedArchiver
代替自定义对象。