переопределение не работает внутри объекта расширения в Swift - PullRequest
0 голосов
/ 09 января 2019

Мы пытаемся обновить нашу версию Swift до версии 4.2. К сожалению, при обновлении обнаружил множество проблем. Один из них мы не смогли исправить ток:

получил эту ошибку в следующем коде:

Переопределение не-objc объявлений из расширений не поддерживается

extension  MyHelpTableViewCell {
    override class var nib: UINib {
        return UINib(nibName: "MyHelpTableViewCell", bundle: nil)
    }

Пожалуйста, помогите мне, как решить эту проблему, если у вас был опыт. Большое спасибо.

UPDATE: Если я добавил @objc и такой динамический код,

class MyHelpTableViewCell: WMHelpTableViewCell {
}

extension MyHelpTableViewCell {
    @objc class dynamic var nib: UINib {
        return UINib(nibName: "MyHelpTableViewCell", bundle: nil)
    }

следующий получил ту же ошибку,

Переопределение не-objc объявлений из расширений не поддерживается

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Вы можете добиться того же без расширения следующим образом:

class WMHelpTableViewCell {
    var identifier: String!
}

class MyHelpTableViewCell : WMHelpTableViewCell {
    override var identifier: String? {
        get {
            return self.identifier
        }
        set {
            self.identifier = newValue
        }
    }
}
0 голосов
/ 09 января 2019

Ошибка вполне понятна:

Вы должны переместить метод переопределения из extension в class


Или вы должны пометить объявление в базовом классе с @objc и @dynamic

class BaseTableViewCell : UITableViewCell {
    @objc class dynamic var identifier : String { return "something" }
}
...