麻烦使用swift 4的KVO"观察"而不是addObserver

Ede*_*den 6 observers key-value-observing swift4 keypaths

我在使用新的KVO语法时遇到了一些麻烦.根据Apple文档:

为关键路径创建一个观察者并调用observe(_:options:changeHandler)方法.有关密钥路径的更多信息,请参阅密钥和密钥路径.

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()
Run Code Online (Sandbox Code Playgroud)

我正在初始化我的观察:

self.observation = self.webView!.observe(\.webView.isLoading, changeHandler: { (webView, observedChange) in
    //code
})
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

在此输入图像描述

Ede*_*den 9

原来语法需要像这样,使用对象Type而不是对象实例名:

self.observation = self.webView!.observe(\WKWebView.isLoading, changeHandler: { (webView, observedChange) in
    //code
})
Run Code Online (Sandbox Code Playgroud)

误读了文档¯\ _(ツ)_ /¯