Реализация NSCoding на NSObject - PullRequest
0 голосов
/ 01 марта 2020

Я получил эти ошибки только на классе NSObject. UIButton и UILabel не имеют такой ошибки.

class Foo: NSObject, NSCoding {
    var title = ""
    var children: [Foo] = []



    // MARK: NSCoding
    override public func encode(with coder: NSCoder) {
        super.encode(with: coder)
        coder.encode(title as Any?, forKey: "title")
        coder.encode(children as Any?, forKey: "children")
    }

    required public init?(coder decoder: NSCoder) {
        super.init(coder: decoder)
        self.title = decoder.decodeObject(forKey: "title") as? String ?? ""
        self.children = decoder.decodeObject(forKey: "children") as? [Foo] ?? []
    }

} 

Есть идеи?

NSCoding error

1 Ответ

1 голос
/ 01 марта 2020

NSCodingCodable, который, я думаю, вы должны использовать вместо этого) - это протокол, поэтому вы ничего не переопределяете, поэтому удалите override и все вызовы super

public func encode(with coder: NSCoder) {
    coder.encode(title as Any?, forKey: "title")
    coder.encode(children as Any?, forKey: "children")
}

required public init?(coder decoder: NSCoder) {
    self.title = decoder.decodeObject(forKey: "title") as? String ?? ""
    self.children = decoder.decodeObject(forKey: "children") as? [Foo] ?? []
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...