Swiftのお話です。iOSアプリを開発しているとき、viewControllerからviewControllerへデータの受け渡しをしたいことがよくあります。その場合、Segueを使って画面遷移とともに変数を渡したり、notificationを使ってデータを飛ばすというのが一般的ではないでしょうか。
しかし状況によってはそうした方法が使えない場合があります。例えば、あるviewControllerで処理が完了したのち、新しいviewControllerにtabbarContoller経由で遷移させ、表示した直後にfacebookのシェアダイアログを表示するといった場合です。新しいviewControllerが発行されているのでnotificationではうまく動かないし、tabbarContollerで遷移先のviewControllerをラップしているのでSegueも使えないという状況ですね。そういった珍しい状況でも使えるのがNSUserDefaultsの強みです。もちろんテンポラリのDBかなんかを用意してちゃんとやるのが一番でしょうけど。今回はライトにやりたいのでNSUserDefaultsを使います。
Contents
Swift2.x系の場合
データの書き込み
bool型や、String型などのオプジェクトを収納できます
1 2 3 4 5 |
let userDefault = NSUserDefaults.standardUserDefaults() // キーを指定してオブジェクトを保存 userDefault.setObject(true, forKey: “isPost”) userDefault.setObject(“12345”, forKey: "postId") userDefault.synchronize() |
データの取り出し
型ごとに取り出す方法が違うので注意。integerForKeyとかも使えます。
1 2 3 |
let userDefaults = NSUserDefaults.standardUserDefaults() let isPost = userDefaults.boolForKey("isPost") let postId = userDefaults.stringForKey("postId") |
データの削除
1 2 3 |
let userDefaults = NSUserDefaults.standardUserDefaults() userDefaults.removeObjectForKey("isPost") userDefaults.removeObjectForKey("postId") |
Swift3.x系の場合
データの書き込み
1 2 3 4 5 |
let userDefault = UserDefaults.standard // キーを指定してオブジェクトを保存 userDefault.set(true, forKey: “isPost”) userDefault.set(“12345”, forKey: "postId") userDefault.synchronize() |
データの取り出し
型ごとに取り出す方法が違うので注意。integerとかも使えます。
1 2 3 |
let userDefaults = UserDefaults.standard let isPost = userDefaults.bool("isPost") let postId = userDefaults.string("postId") |
データの削除
1 2 3 |
let userDefaults = UserDefaults.standard userDefaults.removeObject("isPost") userDefaults.removeObject("postId") |
なお、Android開発時に同様のことをやりたい場合はこちらのエントリーを参照してください。
1件のコメント