我在正确使用新的KVO语法时遇到了一些麻烦。
根据Apple文档:
Create an observer for the key path and call the observe(_:options:changeHandler) method. For more information on key paths, see Keys and Key Paths.
class MyObserver: NSObject {
@objc var objectToObserve: MyObjectToObserve
var observation: NSKeyValueObservation?
init(object: MyObjectToObserve) {
objectToObserve = object
super.init()
observation = observe(\.objectToObserve.myDate) { object, change in
print("Observed a change to \(object.objectToObserve).myDate, updated to: \(object.objectToObserve.myDate)")
}
}
}
let observed = MyObjectToObserve()
let observer = MyObserver(object: observed)
observed.updateDate()
我正在像这样初始化我的观察:
self.observation = self.webView!.observe(\.webView.isLoading, changeHandler: { (webView, observedChange) in
//code
})
但出现此错误:
最佳答案
事实证明,语法需要使用对象Type而不是对象实例名称:
self.observation = self.webView!.observe(\WKWebView.isLoading, changeHandler: { (webView, observedChange) in
//code
})
误读了文档\_(ツ)_/
关于swift4 - 使用Swift 4's KVO “observe”而不是addObserver出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49563102/