swift - 不能用存储的属性覆盖

标签 swift properties overriding

我有一个单元格和相关模型。 该单元格有一个选择按钮,点击我正在取消/选择的按钮。 我必须在单元格中保留一个变量(以保持取消/选定状态) 在 cellForRowAtIndexpath 中,我正在配置单元格以及选定的信息。

我的问题:- 因为我必须在单元格中维护一个变量,所以我的想法是在单元格中有一个存储属性 (var isSelected = false)。我尝试了同样的方法,编译器要求我覆盖 isSelected 属性(因为它已经在 UITableViewCell 中声明),当我覆盖时出现错误“无法使用存储的属性'isSelected'覆盖”

谁能告诉我为什么会抛出这个错误 注意 - 我想使用相同的名称 isSelected

任何帮助将不胜感激

最佳答案

在子类中一个属性只能被相同的类型覆盖

因为 isSelected 被声明为读/写

var isSelected: Bool { get set }

你必须通过添加 getter 和 setter 来覆盖它

override var isSelected : Bool {
    get { return false }
    set { super.isSelected = newValue }
}

或者用一个什么都不做的setter

override var isSelected : Bool {
    get { return false }
    set {}
}

关于swift - 不能用存储的属性覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58726645/

相关文章:

ios - 图像未出现在 Today Extension Widget 中

ios - 使用 UIBezierPath 屏蔽背景图像

swift - 很快,如果我将属性标记为最终属性怎么办

java - 成功注入(inject) Spring bean 上的 NullPointerException

java - AspectJ - 无法覆盖切入点 - 参数类型不匹配

javascript - 如何覆盖 JavaScript 数组排序方法?

c++ - 如何确定一种方法覆盖了 C++ 中现有的虚拟方法?

ios - 如何在iOS中显示来自网络的pdf

arrays - Swift 闭包表达式

objective-c - 调试 iOS : How do I break on property value change?