swift - 覆盖在 swift 的扩展对象内部不起作用

标签 swift swift4.2

我们最近正在尝试将基于 swift 的版本升级到 4.2。不幸的是,在升级时发现了很多问题。我们目前无法解决的问题之一是:

在以下代码中遇到错误:

Overriding non-@objc declarations from extensions is not supported

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

有经验的请帮我解决一下。非常感谢。

更新: 如果我像这样添加了@objc 和 dynamic,

class MyHelpTableViewCell: WMHelpTableViewCell {
}

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

下面有同样的错误,

Overriding non-@objc declarations from extensions is not supported

最佳答案

错误很明显:

您必须将重写方法从扩展 移动到


或者你必须在基类中用@objc@dynamic标记声明

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

关于swift - 覆盖在 swift 的扩展对象内部不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54106900/

相关文章:

ios - iOS中如何根据不同用户类型动态切换UI主题

基于运算符的 Swift 泛型约束

ios - 在 Swift 4.2 中反转字符串

ios - 如何检测 SKSpriteNode 是否在 SKShapeNode 中

ios - 在线/离线查看工作流程 iOS 应用程序

swift - 谷歌地图的自定义信息窗口 - 无法设置 y 位置

swift - 尝试使用 Firebase 保存和获取数据但收到此错误

swift - 按钮渐变在 ios 12 (Swift 4.2) 后不起作用

ios - 在 swift 中以编程方式添加 "Vertical Spacing"

swift - VNDetectFaceRectanglesRequest 总是为偏航/俯仰/滚动返回 0