如何在swift中使用NSCoder编码Character?

时间:2015-08-27 03:57:23

标签: ios swift

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?

1 个答案:

答案 0 :(得分:1)

错误的原因是,虽然StringAnyObject的子类型,但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")
  }
}

在此编码之前将字符转换为字符串,并在解码后转换回字符。