Swift:变量不变(可能的全局问题)

时间:2014-12-27 17:32:07

标签: ios swift variables properties

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

var playBegin = false

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

var playBegin = true

在档案B中:

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

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

2 个答案:

答案 0 :(得分:1)

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

您只能观察类或结构的属性而不是全局变量。因此,如果您全局更改属性,它将不会通知您的本地类,并且当您在类或类的实例的方法中进行更改时将通知您。 / p>

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`
  }
}

答案 1 :(得分:0)

尝试将var var playBegin = true更改为playBegin = true,前者定义一个新的局部变量。