使用NSKeyValueObservation来观察UserDefaults中的值
我想使用Swift 4中基于块的KVO来观察UserDefaults
值的UserDefaults
。 我可以这样做来观察WKWebView
的estimatedProgress
的关键路径但是没有成功使用UserDefaults
因为提供的关键路径不是它想要的。 仅提供一个字符串是不够的(无法推断通用参数’值’),为它添加前缀是不够的(没有更多上下文的表达类型是不明确的)。 创建KeyPath
以在UserDefaults
观察值的正确方法是什么?
observerToken = UserDefaults.standard.observe("myvalue") { (object, change) in //... }
是的可能。首先,您需要将keypath定义为
extension UserDefaults { @objc dynamic var isRunningWWDC: Bool { return bool(forKey: "isRunningWWDC") } }
并使用基于块的KVO的keypath作为
var observerToken:NSKeyValueObservation? observerToken = UserDefaults.standard.observe(\.isRunningWWDC, options:[.new,.old]) { (object, change) in print("Change is \(object.isRunningWWDC)") } UserDefaults.standard.set(true, forKey: "isRunningWWDC")