質問するログイン新規登録

回答編集履歴

1

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

2020/08/30 07:16

投稿

TakuyaAso
TakuyaAso

スコア1361

answer CHANGED
@@ -11,10 +11,9 @@
11
11
  // 省略
12
12
 
13
13
  // 画面表示時にUserDefaultsからTODOリストを取得
14
- // なかった場合は空配列のまま
15
- if let todoList = UserDefaults.standard.array(forKey: todoListKey) as? [Plan] {
14
+ if let data = UserDefaults.standard.array(forKey: todoListKey) as? [Data] {
16
- todo = todoList
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(todo, forKey: "TodoListKey")
26
+ UserDefaults.standard.set(data, forKey: todoListKey)
26
27
 
27
28
  table.reloadData()
28
29
  }