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に変換して保存する または辞書型にキャストして配列として保存。 ここでは後者

コントローラ--ModelとViewの仲介を行う