概要
UserDefaults に Boolとして保存した値を Int としても読み込むことができたという話です。
よく考えれば当たり前ですが、型に厳しいSwiftでもこういうことができるんだなーと思ったのと、予期しない動作にも繋がってしまいそうだと思ったのでメモしておきます。
UserDefaults に Bool の値を保存する
まずは UserDefaults に Bool の値を保存します。
// Bool を UserDefaults に保存
UserDefaults.standard.set(true, forKey: "booleanKey")
UserDefaults.standard.synchronize()
Int で読み込んでみる
これを Int の変数に入れて表示してみます。
// Int の変数に読み込み
let integer: Int = UserDefaults.standard.integer(forKey: "booleanKey")
print(integer)
この時点でエラーになるかなとも思いましたが、保存した true が 1 として出力されました。
まとめ
そもそもキーを変えずに違う型の値を UserDefaults に保存することはないと思いますが、
うっかりやってしまってもクラッシュしないので気付かずにそのまま...というケースもあるかもしれません。
何かの参考になれば幸いです。読んでいただきありがとうございました。
