3

ここで説明されているように、synced と is_deleted の 2 つのフラグを使用して、iPhone アプリを Web サーバーと同期しようとしていますhttps://stackoverflow.com/a/5052208

ユーザーがアプリ内のアイテムを削除すると、is_deleted フラグを true に設定します。オブジェクトが削除されてから (テーブル ビューなど)、アプリに再び表示されないようにしたいのですが、オブジェクトを保持して同期を実行する必要があります。だからここに質問があります:

is_deleted フラグを持つすべてのオブジェクトをデフォルトでアプリに表示されないようにする最善の方法は何ですか?

現在、次の 2 つのオプションを考えることができます。

  1. 項目が is_deleted かどうかをアプリ内のほぼすべてのクエリでチェックするようにします - まったく効率的ではないようです

  2. すべての is_deleted=YES オブジェクトをアプリから自動的に除外する、より一般的な方法を見つけます。たとえば、awakeFromFetch やその他のメソッドをオーバーライドします。しかし、オブジェクトをコンテキストから除外する方法がわかりませんが、同期のためにデータベースに保持します。

これを行う最善の方法は何ですか?#2も可能ですか?

4

2 に答える 2

2

NSPredicate で検索していますよね?すべての同期可能なクラスに、is_deleted 状態をチェックするデフォルトの述語を実装させ、述語に追加して、さらなるクエリに特化させます。

また、名前を付けないでくださいis_deleted。考えてみてくださいis_safe_deleted、またはsafely_removed_and_not_called_is_deleted-- 本当の意味で最初に書い[mo isDeleted]たとき[mo is_deleted]は、ひどい時間を過ごすことになるからです。

于 2014-03-06T19:07:24.943 に答える
1

ユーザーがいくつかのオブジェクトを削除したいが、インターネット接続がない場合にこれを検討していると思いますよね? この場合、データベースからそれらのオブジェクトを実際に削除し、削除されたオブジェクトに関する情報を別の形式で保存することをお勧めします。たとえば、「XXDelayedOperation」という名前の別のエンティティを作成するために必要なすべての情報を持つことができますNSURLRequest。これは、それを処理するより効率的な方法のように見えます。

于 2014-03-06T19:13:35.253 に答える