【发布时间】: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