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