我正在使用新的KeyValue Observing。我在变量发生变化时接到了我的观察者的电话,但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
}
}
它曾经与旧的KVO方式完美配合。
我将该代码更简单作为示例,这是我实际代码的调试。您可以看到m
对象的status
var已设置为PREPARING
,但change.oldValue
和change.newValue
均为零:
答案 0 :(得分:4)
这是一个Swift错误,据报告为https://bugs.swift.org/browse/SR-5872。 https://github.com/apple/swift/pull/20757上正在讨论解决此问题的请求,但截至2020年10月尚未合并。