[英]How do I encode Character using NSCoder in swift?
Like 喜欢
How do I encode enum using NSCoder in swift? 如何使用NSCoder快速编码枚举?
Code : 代码 :
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 throw an error : Xcode抛出错误 :
Cannot invoke 'encodeObject' with an argument list of type '(Characher, forKey: String)' 无法使用类型为((Characher,forKey:String)'的参数列表调用'encodeObject'
What should I do with Character in swift? 我该如何迅速处理Character?
The reason of the error is that, while String
is subtype of AnyObject
, Character
is not (since a character is not an object). 错误的原因是,尽管
String
是AnyObject
子类型, AnyObject
Character
不是(因为字符不是对象)。 A way to solve your problem could be the following: 解决问题的一种方法可能是以下方法:
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")
}
}
Here you convert the character to a string before encoding it, and convert back to character after decoding. 在这里,您可以在编码之前将字符转换为字符串,并在解码后转换回字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.