Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 计算属性生成“;重写声明需要一个';覆盖';关键词";错误_Ios_Swift - Fatal编程技术网

Ios 计算属性生成“;重写声明需要一个';覆盖';关键词";错误

Ios 计算属性生成“;重写声明需要一个';覆盖';关键词";错误,ios,swift,Ios,Swift,代码如下。为什么会出现“覆盖声明需要“覆盖”关键字”错误?这不是为属性提供getter和setter的“快速”方法吗 class TestClass : UICollectionViewCell { var _selected = false var selected : Bool { get { return _selected } set { _selected

代码如下。为什么会出现“覆盖声明需要“覆盖”关键字”错误?这不是为属性提供getter和setter的“快速”方法吗

class TestClass : UICollectionViewCell {
        var _selected = false

        var selected : Bool {
        get {
            return _selected
        }

        set {
            _selected = newValue
            selectedView.hidden = !_selected
        }
    }
}

我相信您出错的原因是
UITableViewCell
已经定义了一个名为
selected
的属性

首先,不要在Swift中使用
\u selected
。这是Objective-C风格。 其次,在
var selected:Bool
之前加上
override
关键字,因为它的super声明了一个同名的属性

更新: 这是一个存储值,您不需要做任何事情来获取它的值,因为swift将自动存储它

   override var selected : Bool {
    get {
      return super.selected
    }
    set {
        selectedView.hidden = !newValue
    }
    }
或使用didSet:

   override var selected : Bool {
    didSet {
        selectedView.hidden = !selected
    }
    }

使用store value保留持久性值。使用computing(具有getter)获取实时值。

快速方法是使用
override
关键字显式标记重写的方法和属性;)如果未选中,您有什么建议?@Crashalot在swift中,使用set、didSet、willSet、get和oldValue、newValue来处理属性。您可以在iBook中查看swift编程。此外,您还应该区分计算和存储值。
set、didSet、willSet、get
的问题是它会分解变量定义,我更喜欢将它们分组在一起,每个声明放在一行上,以便浏览。知道如何使用
set、didSet、willSet、get
,同时允许在块中定义变量(一次一行)?@Crashalot更新了我的答案。谢谢,但你错过了答案几秒钟!不过,投票结果是上升的。