私はRealm(Swift)の新人で、最高のアーキテクチャを採用しようとしています。画面でデータをフィルタリングする方法
私はレルムデータベースに保存して表示するオブジェクトA、B、Cをロードする画面1を持っているとします。次に、私は同じタイプのオブジェクトをロードする画面2に行きますが、他のオブジェクトC、D、Eを読み込みます。画面1に戻ると、A、B、C、D、 E.私は以前のようにA、B、Cを探したいので、フィルタリングする必要があります。
私は2つの戦略について考えました: 最初の1つは、私のオブジェクトとavecのuuidsの配列を維持することです。私はuuidsのテーブルに含まれているオブジェクトをクエリしますが、 uuidsの配列は生きていないので、私の変更はuuids配列にuuidsを追加したり削除したりすることによって引き起こされることはありません。
第2の戦略は、どのオブジェクトを表示するかを知るためにモデルに一時的なプロパティを追加することです。問題は、両方の画面にオブジェクトCが含まれていると、一時的なプロパティが変更されているため、訪問した最後の画面で一時的なプロパティが更新され、オブジェクトが前の画面に表示されなくなります。
私はそれを一度に行いましたが、標準のスウィフト配列に保存されたオブジェクトは良い解決策ではありません。なぜなら、私がカムバックした場合、スクリーン2のスクリーン1とスクリーン2の両方にあるオブジェクトを削除する画面1に戻っても、オブジェクトは配列内に残っていて、割り当てが解除されているので、オブジェクトが有効ではないというメッセージが表示されます。 – Livio
'object.invalidated'プロパティをチェックすることでオブジェクトの状態を確認できます。この画面に戻るときは、そのオブジェクトがまだ有効であることを確認し、そうでない場合はその画面を完全にキャンセルするだけです。 – TiM
ああありがとう!これは実際に素晴らしいです。つまり、画面AのviewWillAppearでfilter({!$ 0.invalidated})を使用して配列をフィルタリングして、その画面に戻るときにクラッシュすることはありません。 – Livio