さあさあ、だいぶ難しくなってきました。

前回データベースへのデータ追加ができましたので、今回はそのデータを活用してメモ機能全体の導線を作ろう……と思っていたのですが。

① 一覧画面でデータベースからメモの総数を抽出
② 必要な数の三角形ボタンを描画、インデックスを貼り付け
③ クリックされたときにインデックスを編集画面に受け渡し
④ 編集画面で再度データベースよりメモ本文を抽出
⑤ 保存ボタンが押されたらデータベースにメモを追加
⑥ 削除ボタンが押されたらデータベースからメモを削除

画面間で実に様々な処理が必要なことがわかってきました。

ニャンコ先生「まだ⑤しかできていない気がするニャ」

仰るとおり。

このままだと身動きが取れなくなる可能性がありますので(実際に力技で進めようとして身動きが取れなくなりました)、できることを増やしていこうと思います。

ということで、⑥のデータベースからレコードを削除する機能を作ってみましょう。

基本的な流れとしては、「管理用のオブジェクトコンテキストを読み込んでおいて」「対象のレコードを指示した削除機能を実行」最後に「保存機能を実行」すれば、レコードが削除されます。(管理用のオブジェクトコンテキストって何?状態ですが、『おまじないだ』と思うことにしましょう)

とりあえず、適当なレコードを削除することはサクッとできたのですが、問題は「狙ったレコードを自在に削除する方法」で、キー情報をどうするかとか、一旦取得したデータを配列に保存しておく方法とか、そのあたりのことがサッパリわからないので、思いっきり迷子になっております。

おまけにこのSwiftUI、UIと名前が付いているからなのか、機能の呼び出し方にちょっとクセがあって、「onAppear」つまり、ビューが呼び出されたタイミングをトリガーにして機能を呼び出したりします。ビューの描画が中心になっているイメージ。とっても未来的だけど、慣れるの大変。

しばらくはコード全体を整理整頓しつつ、データベースからのデータの出し入れに慣れていかねば。


Apple Developer Documentation
Framework > Core Data
Persist or cache data on a single device, or sync data to multiple devices with CloudKit.
外部リンクを開く