KVOとは
KVO(Key Value Observing)の略名になります。
その名の通り、オブジェクトの値を監視する為に用いる技術です。
値の更新や削除などの変更を検知することができとても便利です!
UserDefaultsの値の変更を監視する
UserDefaults
の値をdynamic
で取得する
// 今回はIntの値を扱っています
extension UserDefaults {
@objc dynamic var translateLimit: Int {
return integer(forKey: keyName)
}
}
監視する処理
var observer: NSKeyValueObservation?
private func setKVO() {
observer = UserDefaults.standard.observe(\.translateLimit, options: [.initial, .new], changeHandler: { [weak self] (defaults, change) in
// 行いたい処理を書く
})
}
これで監視の処理は完了!
簡単だしとても便利。
補足
@objc dynamic
で宣言したKeyの名前と、UserDefaultのKeyの名前が一致しないと、値を参照できず正常に動きません。