不符合协议'NSCoding' - Swift 3

Pra*_*hwa 9 encoding nscoding ios swift swift3

我见过几个类似于我的问题; 然而,那些与swift 2/1有关,我目前正在使用swift 3.我相信Apple已经稍微改变了它.

class Person: NSObject, NSCoding {

    var signature: UIImage

    init(signature: UIImage) {
        self.signature = signature
    }

    required convenience init(coder aDecoder: NSCoder) {
        let signature = aDecoder.decodeObject(forKey: "signature") as! UIImage
        self.init(signature: signature)
    }

    func encodeWithCoder(aCoder: NSCoder) {
        aCoder.encode(signature, forKey: "signature")
    }

}
Run Code Online (Sandbox Code Playgroud)

你会注意到Swift 3现在如何强迫我使用required convenience init(而不是required init(.也许这与它有关.

我该如何解决这个问题?谢谢!

vad*_*ian 33

encodeSwift 3中的方法已重命名为

func encode(with aCoder: NSCoder) 
Run Code Online (Sandbox Code Playgroud)

当您收到不符合的错误时,您可以轻松找出缺少哪些必需的方法

  • 按下⌘B以构建代码.
  • ⌘4显示问题导航器.
  • 单击问题行前面的显示三角形.