赞
How do I encode enum using NSCoder in swift?
代码:
import Foundation
class Car: NSObject, NSCoding {
var bmw: Character
required init(coder decoder: NSCoder) {
bmw = (decoder.decodeObjectForKey("bmw") as? Character)!
}
func encodeWithCoder(encoder: NSCoder) {
encoder.encodeObject(bmw, forKey: "bmw")
}
}
Xcode抛出错误:
无法调用' encodeObject'使用类型'(Characher,forKey:String)'
的参数列表我应该如何处理swift中的Character?
答案 0 :(得分:1)
错误的原因是,虽然String
是AnyObject
的子类型,但Character
不是(因为字符不是对象)。解决问题的方法如下:
class Car: NSObject {
var bmw: Character
required init(coder decoder: NSCoder) {
bmw = Character(decoder.decodeObjectForKey("bmw") as! String)
}
func encodeWithCoder(encoder: NSCoder) {
encoder.encodeObject(String(bmw), forKey: "bmw")
}
}
在此编码之前将字符转换为字符串,并在解码后转换回字符。