gpt4 book ai didi

iOS KVO - 检测何时再次设置相同的值

转载 作者:搜寻专家 更新时间:2023-11-01 07:08:04 24 4
gpt4 key购买 nike

是否可以通过一种方式使用 KVO,它不仅可以检测值是否更改,还可以检测是否再次设置了相同的值?我目前仅在值更改(与之前设置的不同)时才收到通知。每次设置值时我都需要收到通知(即使它与之前设置的值相同)。我怎样才能做到这一点?

我的代码:

private func addObserver() {
defaults.addObserver(self, forKeyPath: DefaultsKeys.testKey._key, options: .new, context: nil)
}

public override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
guard let value = change?[NSKeyValueChangeKey.newKey] as? Bool else { return }
statusCallback?(value)
}

private func removeObserver() {
defaults.removeObserver(self, forKeyPath: DefaultsKeys.testKey._key)
}

最佳答案

KVO 通常在每次设置观察到的属性时调用,即使它与上次的值相同。但我猜你正在观察 UserDefaults,它有一个特性可以防止这种情况发生(可能是一种优化,可以防止不必要的存储存储)。

你可以注册.didChangeNotification,无论值是否改变,它都会调用:

NotificationCenter.default.addObserver(forName: UserDefaults.didChangeNotification, object: nil, queue: .main) { notification in
print("notification", notification)
}

关于iOS KVO - 检测何时再次设置相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46874003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com