モケラ

Tech Sheets

mokelab

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を返します。

一覧に戻る