在文件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`
}
}