UserDefaults / NSUserDefaultsで値を保存し読み込む
最終更新日:2016-09-18
(Swift 3に対応させました)
UserDefaults / NSUserDefaultsを簡単なストレージとして使ってみましょう。
class ViewController: UIViewController {
    // 保存
    @IBAction func saveButtonClicked(sender: AnyObject) {
        let defaults = UserDefaults.standard
        defaults.set("moke", forKey: "name")
        defaults.set(11, forKey: "age")
        defaults.synchronize()
    }
    // 読み込み
    @IBAction func loadButtonClicked(sender: AnyObject) {
        let defaults = UserDefaults.standard
        let name = defaults.string(forKey: "name")
        let age = defaults.integer(forKey: "age")
        print("name=\(name!) age=\(age)")
    }
}
順に見ていきましょう。
値を保存する
UserDefaultsに値を保存するには、UserDefaultsのset()を使います。いろいろな型用のメソッドがオーバーライドされています。
値を読み込む
UserDefaultsに保存した値を読み込むには、型に応じたUserDefaultsのメソッドを呼びます。
| 型 | メソッド | 
|---|---|
| Int | integer(forKey:) | 
| Float | float(forKey:) | 
| Double | double(forKey:) | 
| String | string(forKey:) | 
| Bool | bool(forKey:) | 
書き込みを即時反映させる
set()で保存した値は、適当な時間でディスクに保存されます。もし、書き込んだあとすぐに値を読み込む必要がある場合は、書き込みをディスクに即時反映させるため、UserDefaultsのsynchronize()を呼びます。
class ViewController: UIViewController {
    // 保存
    @IBAction func saveButtonClicked(sender: AnyObject) {
        let defaults = UserDefaults.standard
        defaults.set("moke", forKey: "name")
        defaults.set(11, forKey: "age")
        // ディスクに即時反映
        defaults.synchronize()
    }
}
synchronize()は、成功するとYESを返します。

