简体   繁体   English

如何使用NSCoder快速编码Character?

[英]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). 错误的原因是,尽管StringAnyObject子类型, 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM