不符合协议'NSCoding' - Swift 3

时间:2016-06-20 14:31:08

标签: ios swift encoding nscoding 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")
    }

}

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

如何解决此问题?谢谢!

1 个答案:

答案 0 :(得分:33)

Swift 3中的encode方法已重命名为

func encode(with aCoder: NSCoder) 

如果不符合错误,您可以轻松找出缺少哪些必需的方法

  • ⌘B构建代码。
  • ⌘4显示问题导航器。
  • 点击问题行前面的显示三角形。