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







All Articles