我上课了
class Player {
var name = ""
func encodeWithCoder(encoder: NSCoder) {
encoder.encodeObject(name)
}
func initWithCoder(decoder: NSCoder) -> Player {
self.name = decoder.decodeObjectForKey("name") as String
return self
}
init(coder aDecoder: NSCoder!) {
self.name = aDecoder.decodeObjectForKey("name") as String
}
init(name: String) {
self.name = name
}
}
Run Code Online (Sandbox Code Playgroud)
我想序列化并保存到用户默认值.
首先,我不确定如何正确编写编码器和解码器.所以对于init我写了两个方法.
当我尝试执行此代码时:
func saveUserData() {
let player1 = Player(name: "player1")
let myEncodedObject = NSKeyedArchiver.archivedDataWithRootObject(player1)
NSUserDefaults.standardUserDefaults().setObject(myEncodedObject, forKey: "player")
}
Run Code Online (Sandbox Code Playgroud)
应用程序崩溃,我收到此消息:
*** NSForwarding: warning: object 0xebf0000 of class '_TtC6GameOn6Player' does not implement methodSignatureForSelector: -- trouble …Run Code Online (Sandbox Code Playgroud)