[SwiftUI]What I wear counter/着た回数カウンタ - (4) Update CoreData
- handmadeapp
- 2020年2月3日
- 読了時間: 2分
更新日:2020年2月18日
着た回数カウントアプリの続きです。
今日は、追加されたItemから「今日着たものを登録する」部分。
完成イメージは、こんな感じ。

①Edit時のView作成
②EditViewのチェックボックスアクション
③「Register」ボタンタップ時のCoreData更新
④「Register」ボタンタップ後のアラートメッセージ&画面遷移
に切り分けて順に作っていきます。
①Edit時のView作成
通常時は、リスト項目の選択→Detail Viewへの遷移になるので、
ItemRow自体を分けることに。
ItemRowとは別に、ItemRowEditを作成。
<ItemRow> 変更なし
※「③「Register」ボタンタップ時のCoreData更新」の準備として、
count_after_washなど回数を保持する変数の定義をStringからInt16に変更。
それに伴い、Textに設定する際、Stringへの変更だけ追記しています。
<ItemRowEdit> 新規作成
チェックボックスは、Buttonでタップ毎に「isChecked」変数をToggleし、
「isChecked」の内容に応じてLabelの表示アイコンを変更する形に。
<ContentView>
・NavigationBarにEditボタン追加(Edit中はTextの表示を「Cancel」に)
・Edit時は「Register what I wear today」ボタンを表示
・ItemRow、ItemRowEditの出し分け
②EditViewのチェックボックスアクション
チェックボックスで選択されたItem情報を保存しておき、
「Register」ボタンタップ時に参照、CoreDataに反映する必要がある。
「selections」というArrayを用意して、チェックボックスがタップされた時に、
・未選択→選択:Arrayに追加
・選択→未選択:Arrayから削除(名前の一致を検索して削除)
することに。
名前は必ずユニークである前提の仕様。。。
まぁ、使ってみて不便があったらItem追加時のチェックなどを入れて対応すれば良いかな。
③「Register」ボタンタップ時のCoreData更新
変更対象のItemの名前が登録された「selections」Arrayのそれぞれについて、
洗った回数を+1するFunctionを作成。
これを、「Register」ボタンから呼び出す。
④「Register」ボタンタップ後のアラートメッセージ&画面遷移
最後に、「Register」ボタンタップ後に
・Alert表示
・Alert確認(OKタップ)後、selectionsに設定されていた値をクリア ・Alert確認(OKタップ)後、EditView解除
するよう「Register」ボタンに機能追加。
以上、CoreDataの更新ができるようになりました。
Commentaires