[iPhone] UserDefaults データ保存


ユーザーの設定情報などちょっとしたデータを保存しておきたい場合などにはUserDefaultsを使う事で簡単にデータ保存ができます。

Swift 5
Xcode 10.2.1

データの保存

 
iOSアプリでデータを保存するには幾つかの方法があります。

  • UserDefaults
    • keyとそれに対応するvalueで簡単に実装可能
  • Core Data
    • データをレコード形式で保存しデータが大量なケースに向いている
  • KeyChain
    • セキュアなエリアに保存して重要なデータ保存に使われる

これ以外にもiCloudのようにサーバー上にデータを保存する方法や、オープンソースのRealmなどがあります。
ここでは、簡単で少量のデータ保存を想定したUserDefaultsの実装を試して見ます。


 

 

UserDefaults

 
基本的にはKey, valueの形式でXMLファイルで保存されています。高速にそれを読み書きするために(実際は時間がかかる)アプリ起動時に読み込んでキャッシュに入れていたりします。
 
そのため時々XMLファイルとキャッシュの同期を取っておく必要があります。
 
保存する場合はその書き込みを明示的に指示するために
synchronize()メソッドを実行します。
 
UserDefaultsを使ったデータの読み書きの概要です。
 

 

サンプルコード

 
まとめたコード例です。
TextFieldに入力したStringをUserDefaultsで保存。アプリを再起動させた初期画面には保存したデータを読み出して表示しています。また「Clear」ボタンを押すとデータがクリアされ初期値が表示されます。
 
ViewController.swift

 
これでLabel, TestField, Buttonをコードと紐付ければ出来上がりです。
 

 

サンプル動画

 

 
アプリに書き込んだ後で、アプリを終了させる動作がちょっと面倒です。基本的にはアプリは終了させないのがAppleの基本なので。その方がバッテリー消費がトータルで軽減されるということでしょう。

ただアプリが終了するという確たるものが欲しいのであえて終了させました。Foregroundから消しだだけでは待機状態なので
 
 
Ref:
UserDefaults – Foundation | Apple Developer Documentation