Corredor

ウェブ、プログラミングの勉強メモ。

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 の値がなかった場合の処理
}

いっちょあがり~。

詳細! Swift 4 iPhoneアプリ開発 入門ノート Swift 4 + Xcode 9対応

詳細! Swift 4 iPhoneアプリ開発 入門ノート Swift 4 + Xcode 9対応