在文件A中,我定义了var:

var playBegin = false


稍后在同一文件中的函数结尾:

var playBegin = true


在文件B中:

struct pbVariableCheck {
    var playBegin: Bool {
        didSet {
            if playBegin == true {
                println("\(playBegin)")
            }
        }
    }
}


但是我的财产观察员在这里看不到变化,因此没有观察到结果吗?我可能做错了什么?

最佳答案

您每次都用playBegin重新声明var。分配时使用playBegin = true代替。

您只能观察到class或struct的属性而不是全局变量,因此,如果您全局更改属性,它将不会通知您的本地类,而当您在class或class的实例方法中进行更改时,它将被通知。

struct pbVariableCheck {
var playBegin: Bool {
    didSet {
        if playBegin == true {

            println("\(playBegin)")
        }
    }
}
}

//In file A:
class A {
  init() {
     var a = pbVariableCheck(playBegin: false)
     a.playBegin = true //Change the value on instance of `pbVariableCheck`
  }
}

10-08 18:16