我正在尝试在Swift中使用KVO,但是方法"observeValueForKeyPath"被调用一次.
我尝试使用NSNumber而不是Int添加所有选项addObserver,但是当我的视图加载时,该方法仍然会调用一次.
任何的想法 ?
编辑:似乎我找到了一个临时解决方案:
var lifes: Int {
willSet {
willChangeValueForKey("lifes")
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用新的KeyValue观察。当变量更改时,我接到观察者的电话,但是该change结构附带了newValue,oldValue两者都为nil,所以它永远不会起作用//do something:
let observer = foo.observe(\.bar, options: [.new, .old]) { obj, change in
if change.kind == .setting && change.oldValue != change.newValue {
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
过去,它可以与旧的KVO方法完美配合。
作为示例,我使该代码更简单,这是对我的实际代码的调试。你可以看到,m对象具有status变种已被设置为PREPARING,但两者change.oldValue并change.newValue是零: