How do I encode a character using NSCoder in swift?
how
How to encode an enum using NSCoder in swift?
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 error :
Cannot call 'encodeObject' with argument list like '(Characher, forKey: String)'
What should I do with a symbol in swift?
+1
source to share
1 answer
The reason for the error is that, although it String
is a subtype AnyObject
, Character
it is not (since the symbol is not an object). The way to solve the problem can be as follows:
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 a character to a string before encoding it, and convert it back to a character after decoding.
+1
source to share