Swift MVCモデルの役割の具体的説明(途中なので、読まないこと!)
todoアプリを作る MVCもでるで
モデルの役割
データ構造を表現すること
final class Task { var text: String // タスクの内容 var deadline: Date // 締切 // textとdeadlineを引数にとるイニシャライザメソッド init (text: String, deadline: Date) { self.text = text self.deadline = deadline } // dictionaryを引数にとるイニシャライザメソッド。 init(from dictionary: [String: Any]) { text = dictionary["text"] as! String deadline = dictionary["deadline"] as! Date } }
Task内容は、 1-タスク内容 2-締め切
モデル--データの振る舞いやロジックを保持する
final class TaskDataSource: NSObject { private var tasks = [Task]() func loadData() { let userDefaults = UserDefaults.standard let taskDictionaries = userDefaults.object(forKey: "tasks") as? [[String: Any]] guard let t = taskDictionaries else { return } for dic in t { let task = Task(from: dic) tasks.append(task) } }
UserDefaultsクラスの役割は
ユーザーのデフォルトデータベースとのインターフェイス。アプリの起動時にキーと値のペアを永続的に保存します。
standardプロパティは
standardUserDefaultsは、現在のアプリケーションの検索リストを検索するように設定されたNSUserDefaultsのグローバルインスタンスを返します。
ざっくりインスタンスの返すとおぼえておくと良いかも。
func save(task: Task) { tasks.append(task) var taskDictionaries = [[String: Any]]() for t in tasks { let taskDictionary: [String: Any] = ["text": t.text, "deadline": t.deadline] taskDictionaries.append(taskDictionary) } let userDefaults = UserDefaults.standard userDefaults.set(taskDictionaries, forKey: "tasks") userDefaults.synchronize() }
Task を保存するために、Tasksをdataに変換して保存する または辞書型にキャストして配列として保存。 ここでは後者