当たり前のことなのかもしれませんが、最近まで知らなくて
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
は、変更前の値を通知するオプションだそうです。