簡體   English   中英

使用NSKeyValueObservation來觀察UserDefaults中的值

[英]Using NSKeyValueObservation to observe value in UserDefaults

我想使用Swift 4中基於塊的KVO來觀察UserDefaults值的UserDefaults 我可以這樣做來觀察WKWebViewestimatedProgress的關鍵路徑但是沒有成功使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM