回答編集履歴
1
Data型を使うように変更しました。
answer
CHANGED
@@ -11,10 +11,9 @@
|
|
11
11
|
// 省略
|
12
12
|
|
13
13
|
// 画面表示時にUserDefaultsからTODOリストを取得
|
14
|
-
// なかった場合は空配列のまま
|
15
|
-
if let
|
14
|
+
if let data = UserDefaults.standard.array(forKey: todoListKey) as? [Data] {
|
16
|
-
todo =
|
15
|
+
self.todo = data.map { try! JSONDecoder().decode(Plan.self, from: $0) }
|
17
|
-
|
16
|
+
}
|
18
17
|
}
|
19
18
|
|
20
19
|
@IBAction func add(_ sender: Any) {
|
@@ -22,7 +21,9 @@
|
|
22
21
|
todo.append(Plan(doing: mozi))
|
23
22
|
|
24
23
|
// ローカルの配列に追加してUserDefaultsに保存
|
24
|
+
// Data型で保存(Codable使っているので下記のようにエンコードできます)
|
25
|
+
let data = self.todo.map { try? JSONEncoder().encode($0) }
|
25
|
-
UserDefaults.standard.set(
|
26
|
+
UserDefaults.standard.set(data, forKey: todoListKey)
|
26
27
|
|
27
28
|
table.reloadData()
|
28
29
|
}
|