回答編集履歴

1

Data型を使うように変更しました。

2020/08/30 07:16

投稿

TakuyaAso
TakuyaAso

スコア1361

test CHANGED
@@ -24,13 +24,11 @@
24
24
 
25
25
  // 画面表示時にUserDefaultsからTODOリストを取得
26
26
 
27
- // なかった場合は空配列のまま
27
+ if let data = UserDefaults.standard.array(forKey: todoListKey) as? [Data] {
28
28
 
29
- if let todoList = UserDefaults.standard.array(forKey: todoListKey) as? [Plan] {
29
+ self.todo = data.map { try! JSONDecoder().decode(Plan.self, from: $0) }
30
30
 
31
- todo = todoList
32
-
33
- }
31
+ }
34
32
 
35
33
  }
36
34
 
@@ -46,7 +44,11 @@
46
44
 
47
45
  // ローカルの配列に追加してUserDefaultsに保存
48
46
 
47
+ // Data型で保存(Codable使っているので下記のようにエンコードできます)
48
+
49
+ let data = self.todo.map { try? JSONEncoder().encode($0) }
50
+
49
- UserDefaults.standard.set(todo, forKey: "TodoListKey")
51
+ UserDefaults.standard.set(data, forKey: todoListKey)
50
52
 
51
53
 
52
54