67
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Swift:UserDefaultsで初期値を設定する方法

Last updated at Posted at 2017-06-24

背景

ちょっとしたデータの保存がしたいとき、RealmやCoreDataを使うほどではないというとき、UserDefaults使うと思います。そんなUserDefaultsで初期値がなくてnilだと困るなんて思ったことありませんか? 初期値の設定、簡単にできます。

ソースコード

class hope: superhoge {
    let userDefaults = UserDefaults.standard

    init() {
        super.init()
        //ディクショナリ形式で初期値を指定できる
        userDefaults.register(defaults: ["UserName" : "NoName",
                                         "UserID" : 315,
                                         "Flag" : false])

        //値を取り出す
        let name = userDefaults.object(forKey: "UserName") as! String
        let id = userDefaults.integer(forKey: "UserID")
        let flag = userDefaults.bool(forKey: "Flag")
    }
}

解説

値を取り出す前に.register()メソッドを用いることで初期値を指定することができます。この初期値の特性は

  • 一度も利用されていない(保存されていない)Keyのデータに適応される
  • 値がすでに入っているときはそちらを優先し、初期値は無視される

という風になっており便利です。
初期値の指定をしない場合、UserDefaultsではそのデータ型の基本値(Intなら0、Boolならfalse)が初回の呼び出しで取得できます。しかし、例えばInt型で50~100の間の数以外はエラーになってしまうから初期値を50にしたいなどの状況があると思います。そういう時にぜひ.register()使ってみてください。

67
39
1

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
67
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?