[SwiftUI]What I wear counter/着た回数カウンタ - (3) Dynamic List w/ CoreData
- handmadeapp
- 2020年1月28日
- 読了時間: 1分
更新日:2020年2月18日
着た回数カウントアプリの続きです。
今日は、CoreDataで登録内容を保存し、Listに登録内容をDynamicに表示する部分を。
まずは、CoreDataのEntityを用意して、Codegenを「Manual/None」に変更し、

Editor > Create NSManagedObject Subclass.. で
・Item+CoreDataClass.swift
・Item+CoreDataProperties.swift
を作成。
Item+CoreDataProperties.swiftに「Identifiable」を追記。

List View(Item一覧)と、Add Item View(新しいItem登録)に
を追記して、CoreDataの利用準備完了。
①List View
・Category毎にSection分けして、それぞれのCategoryのItem一覧を表示する
・Itemを削除する
・選択したItemの詳細を、Detail Viewに表示する
まずは、こちらの記事を参考に、CoreDataに登録されたデータを、
カテゴリ毎にFilterして各Sectionから呼び出せるよう、「FilteredList」を作成。
もともと、
ContentView > Body > List > Section → ItemRowと呼び出していたのを、
ContentView > Body > List > Section → FilteredList → ItemRowに。
FilteredList(onDeleteでのItem削除も追加済み)
ContentView
ItemRow(DetailViewにitemを渡す部分のみの変更)

②Add Item View
・Add Itemボタンをタップしたら、入力された内容でItemを登録する
CoreDataへのデータ追加Functionを作成し、
「Add」ボタンのActionに設定。
また、画面の遷移はNavigationLinkの「戻る」ボタンだけにしたかったので、
「Add」ボタンタップ後は、「Itemを登録しました」とのメッセージが出る仕様に。
最後に、TextField入力後にKeyboardが非表示にならない問題があったので、
こちらを参考にKeyboardを非表示にする設定を追記。

③Detail View
・List Viewで選択したItemの詳細を表示する
Preview部分にも、受け取る変数の記載が必要。

以上、かなり力技な感じになってしまったものの、
DynamicにList内容を表示することはできるようになりました。
Yorumlar