複数の項目の保存・読込・削除

前回の学習を踏まえて、複数のデータの保存・読込・削除を行うお誕生日記録アプリを作成してみた。
これで正しいかどうかはわからないが、アプリは動いた。
調べてみると、最近のiOSではsynchronize()は使わないらしい。むしろ使わないことが推奨されている。

手順
・NSUserDefaultsを用いる
・名前を基本のキーにする
・誕生日のキーは『名前に『の誕生日』」を追加して使う。
・性格も同様にする。

デザインがイマイチだが、出来上がりはこんな感じ。

一応、きちっと動いたが何かが足りない感じだ。
(名前が長くてはみ出した)

保存と読込(見やすいように画面を整理した)


=========================
備忘録:複数データの保存
(コード) Xcode7.2 Swift2

                                                                                              • -

//
// ViewController.swift
// お誕生日アプリ改訂版
//
// Created by yasui_swift on 2016/01/06.
// Copyright © 2016年 darumammz.com. All rights reserved.
//

import UIKit
class ViewController: UIViewController {

@IBOutlet weak var keyField: UITextField!
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var textField2: UITextField!

@IBOutlet weak var keyLabel: UILabel!
@IBOutlet weak var label: UILabel!
@IBOutlet weak var label2: UILabel!

@IBOutlet weak var labelKey2: UILabel!
@IBOutlet weak var labelKey3: UILabel!

let userDefault = NSUserDefaults.standardUserDefaults()
let userDefault2 = NSUserDefaults.standardUserDefaults()
let userDefault3 = NSUserDefaults.standardUserDefaults()

override func viewDidLoad() {
super.viewDidLoad()
userDefault.registerDefaults(["id":"default"])
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
//保存
@IBAction func saveButton(sender: AnyObject) {

let userDefault = NSUserDefaults.standardUserDefaults()
userDefault.setObject(keyField.text! , forKey: keyField.text!)//名前

let userDefault2 = NSUserDefaults.standardUserDefaults()
let key2:String = keyField.text! + "の誕生日"
userDefault2.setObject(textField.text! , forKey: key2)//誕生日フィールドの保存

let userDefault3 = NSUserDefaults.standardUserDefaults()
let key3:String = keyField.text! + "の性格"
userDefault3.setObject(textField2.text! , forKey: key3)//誕生日フィールドの保存

self.view.endEditing(true);//keyBoardを隠す
}

//読み込み

@IBAction func loadButton(sender: AnyObject) {
let userDefault = NSUserDefaults.standardUserDefaults()
let loadText:String! = userDefault.stringForKey(keyField.text!)//名前

let userDefault2 = NSUserDefaults.standardUserDefaults()
let key2:String = keyField.text! + "の誕生日"
let loadText2:String! = userDefault2.stringForKey(key2)//誕生日フィールドの読込

let userDefault3 = NSUserDefaults.standardUserDefaults()
let key3:String = keyField.text! + "の性格"
let loadText3:String! = userDefault3.stringForKey(key3)//性格フィールドの読込

keyLabel.text = loadText//名前。すなわちkeyFieldと同じ
label.text = loadText2//誕生日
label2.text = loadText3//性格
labelKey2.text = key2//誕生日key
labelKey3.text = key3//性格key
}

//削除
@IBAction func deleteButton(sender: AnyObject) {
userDefault.removeObjectForKey(keyField.text!)
let key2:String = keyField.text! + "の誕生日"
userDefault2.removeObjectForKey(key2)//誕生日フィールドの削除

let key3:String = keyField.text! + "の性格"
userDefault3.removeObjectForKey(key3)//性格フィールドの削除
let defaults:String = userDefault.objectForKey("id") as! String
label.text = defaults
label2.text = defaults
}
}