2
1

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 5 years have passed since last update.

【Swift】BoolでUserDefaultsに保存した値をIntで読み込むことができた

Last updated at Posted at 2019-04-06

概要

UserDefaultsBoolとして保存した値を Int としても読み込むことができたという話です。
よく考えれば当たり前ですが、型に厳しいSwiftでもこういうことができるんだなーと思ったのと、予期しない動作にも繋がってしまいそうだと思ったのでメモしておきます。

UserDefaults に Bool の値を保存する

まずは UserDefaultsBool の値を保存します。

    // Bool を UserDefaults に保存
    UserDefaults.standard.set(true, forKey: "booleanKey")
    UserDefaults.standard.synchronize()

これでデバイスのplist内に値が保存されます。
スクリーンショット 2019-04-07 0.18.41.png

Int で読み込んでみる

これを Int の変数に入れて表示してみます。

    // Int の変数に読み込み
    let integer: Int = UserDefaults.standard.integer(forKey: "booleanKey")
    print(integer)

この時点でエラーになるかなとも思いましたが、保存した true1 として出力されました。

まとめ

そもそもキーを変えずに違う型の値を UserDefaults に保存することはないと思いますが、
うっかりやってしまってもクラッシュしないので気付かずにそのまま...というケースもあるかもしれません。

何かの参考になれば幸いです。読んでいただきありがとうございました。

2
1
0

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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?