[iOS 8/Xcode 6] SwiftではじめるiOS開発 #2 [データ保存]
ただいま基本動作を絶賛学習中です。
データ保存
アプリを作成しているとデータを永続化して保存する(アプリを終了しても保存されている)ことは、ほぼ必須の基本的実装だと思います。
iOSには、データを保存する方法としてはプロパティリストや、NSUserDefaults、CoreDataなど、いろいろと方法があります。
まずは、入門ということで使用頻度が高く、実装が容易なNSUserDefaultsをSwiftで実装してみます。
プロジェクト作成
SingleView Application でプロジェクトを作成します。
作成したプロジェクトのMain.storyboardを開き、以下のようにオブジェクトを配置しました。
続いて、controlキー + ドラッグ&ドロップでsaveボタン、loadボタンのactionを設定します。
最後に、TextFieldと、Labelのオブジェクトも紐づけておきます。
先ほどのボタンと同様に controlキー + ドラッグ&ドロップで設定します。
ViewControllerのコードが以下のようになりました。
class ViewController: UIViewController { // TextFieldのアウトレット @IBOutlet weak var textField: UITextField! // Labelのアウトレット @IBOutlet weak var label: UILabel! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } // saveボタンのアクション @IBAction func saveButton(sender: AnyObject) { } // loadボタンのアクション @IBAction func loadButton(sender: AnyObject) { } }
テキストデータの保存と読み出し
動作としては、saveボタンを押したらTextFieldの文字列が保存されて、loadボタンを押したらlabelに表示されるという動作を想定しています。
それでは、実際にNSUserDefaultsを使ってデータの保存処理をしてみます。 saveButton()を以下のように書き換えます。
[Swift] // saveボタンのアクション @IBAction func saveButton(sender: AnyObject) { // データ保存処理
// NSUserDefaultsインスタンスの生成 let userDefaults = NSUserDefaults.standardUserDefaults()
// キー: "saveText" , 値: "
} [/Swift]
つぎに、読み込み処理としてloadButton()を以下のように書き換えます。
[Swift] // loadボタンのアクション @IBAction func loadButton(sender: AnyObject) { // データ読み込み処理
// NSUserDefaultsインスタンスの生成 let userDefaults = NSUserDefaults.standardUserDefaults()
// キーが"saveText"のStringをとります。 var loadText : String! = userDefaults.stringForKey("saveText")
// labelに表示 label.text = loadText
} [/Swift]
実行してみると、保存と読み込みができていることが確認できました。
また、アプリを終了しても保存されている事を確認できました。
以上です。