Swift iOS アプリで UserDefaults を使ってデータを保存したり読み込んだりする
アプリを開発していて、「最後に選択していた UITabBarItem がどれだったか」といった情報を記録していて、アプリを再起動した時もその情報を参照したくなった。
そこで、アプリ内にちょっとしたデータを保存できる UserDefaults という機能を使って、任意の情報をアプリ内に記録してみようと思う。
目次
環境情報
- 対象 iOS バージョン : v11.3
- Xcode : v9.3 (9E145)
- Swift : v4.1 (swiftlang-902.0.48 clang-902.0.37.1)
データを記録する
データを記録するには、UserDefaults.set()
を利用する。
class ViewController: UIViewController {
// UserDefaults のインスタンス
let userDefaults = UserDefaults.standard
override func viewDidLoad() {
super.viewDidLoad()
// myData という名前で "1" という値を保存する
userDefaults.set("1", forKey: "myData")
userDefaults.synchronize()
}
}
set()
のあと、synchronize()
を実行して、データを同期させておくこと。
データを取り出す
set()
で保存したデータを取り出すには、UserDefaults.object()
を使う。
// myData の値を取り出す
let lastMyData: String? = userDefaults.object(forKey: "myData") as? String
// lastMyData を Int 型として扱いたい時は以下のように型変換してみたりする
if let lastMyDataStr = lastMyData, let lastMyDataInt = Int(lastMyDataStr) {
// 値があった場合の処理
// lastMyDataInt を利用してアレコレ…
}
else {
// myData の値がなかった場合の処理
}
いっちょあがり~。