[英]Using NSKeyValueObservation to observe value in 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
{
get {
return bool(forKey: "isRunningWWDC")
}
set {
set(newValue, forKey: "isRunningWWDC")
}
}
}
並使用基於塊的KVO的密鑰路徑
var observerToken:NSKeyValueObservation?
observerToken = UserDefaults.standard.observe(\.isRunningWWDC, options:[.new,.old])
{ (object, change) in
print("Change is \(object.isRunningWWDC)")
}
UserDefaults.standard.isRunningWWDC = true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.