文系なわたしですが、2020年3月からAppleホームページのswift programming language guide(https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html)
から勉強してから3ヶ月が経ちました。3月は夜と週末しか時間がないですが、4月になってからコロナの関係で自宅で待機になり、毎日swiftと戦っています。
何か目標があった方が効率が良いと思うので、興味がある「芸能・エンターテイメント」情報を中心としたSNSアプリを作るようにしています。面白いと思った機能、新しく勉強した知識どんどんこのアプリに入れます。今このアプリはどんどんきれいになり、realmも使えるようになってきていますが、改善点がどんどん出てきて、改善に当たってのトラブルも多いです。
そこでトラブルを記録して、解決できた時には解決案も書こうと思っています。
2020年6月22日時点 問題①
realmに保存したデータ(日記全件のタイトルや本文)を抽出したものを「diaries」と定義した。
if let diaries != nilの前提で、diariesをForEachループし、タイトルだけの一覧をUIに表示、
.onDelete(perform:deleteFromRealm)で削除機能を実装しました。
問題は、削除をクリックして確定しても、削除されたはずのセルは消えない!
でも再度アプリを起動したら消えているし、realmデータを見たら消えているし、
UIがUpdateされていないだけだと思っています。
ちなみに、diariesは@Stateで定義しているので、データが変わる途端、UIが更新されるはず。。。
deleteFromRealm関数の中で削除実施後、realmから再度全件データを取得、それをdiariesへ与えるのを
試しました。FetalError発生でした。
Reload、Refreshとかを実装してみたいが、方法がまだわかりません。
ていうか、なんで@Stateで定義したのにAuto更新しないのか知りたい!!
調べてみましたけど、同じ状況の人もいるが、まだ解決案まで辿り着いていません。
ソースコードはこんな感じです。↓