LoginSignup
6

More than 3 years have passed since last update.

【Swift】KVOでUserDefaultsの値の変更を監視する

Last updated at Posted at 2020-06-03

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の名前が一致しないと、値を参照できず正常に動きません。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6