LoginSignup
41
41

More than 5 years have passed since last update.

NSUserDefaultsを観測し、保存内容が変わったことを通知する実装

Last updated at Posted at 2016-02-04

当たり前のことなのかもしれませんが、最近まで知らなくて
viewWillAppearとかで画面が切り替わったりした時にUserDefaultの値をもとに画面に変化を与えてました。
しかし場合によっては、上手く反映されないこともあるので困ることが多々あります。

なので、僕みたいに知らない人に共有したいと思います。

ViewController.swift
override func viewDidLoad() {
        super.viewDidLoad()
        let userDefaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
        // NSUserDefaultsを観測
        userDefaults.addObserver(self, forKeyPath: "NSUserDefaultsの観測したい対象のKey", options: [NSKeyValueObservingOptions.New, NSKeyValueObservingOptions.Old], context: nil)
}

// UserDefaultの観測イベント
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
        //通知された時に処理したい内容
}

指定してあるオプションの意味は

NSKeyValueObservingOptions.New は、変更後の値を

NSKeyValueObservingOptions.Old は、変更前の値を通知するオプションだそうです。

41
41
2

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
41
41