0

サーバー上の複数のテーブルからの一括データのダウンロードを実装しようとしています。

私の場合、16 個のテーブルがあります。これらすべてのテーブルに対して、サーバーに 10 個のリクエストを送信します。これは、関連するテーブルに対して少し論理的なグループ化を行ったことを意味しますが、すべてのテーブルがいずれかの関係を通じて相互に関連付けられているようです。

ダウンロード中には、次の 3 つのケースを考慮する必要があります。

  1. ローカルで各テーブルにデータを保存します。
  2. 挿入されたオブジェクト間の関係を管理します。
  3. ダウンロード中にリクエストの 1 つが失敗した場合の処理​​状況 (8 番目のリクエストが失敗したなど)。

私は各応答に対してこのアプローチに従います。

  1. 管理オブジェクト コンテキストにデータを挿入しています。
  2. NSPredicate を起動して関連オブジェクトを関連付けることにより、関係を管理します。
  3. コンテキストを保存します。

応答が失敗した場合、次の 2 つのオプションがあります。

  1. 次回は、失敗した応答から続行します。
  2. 保存されたすべてのデータを以前の状態に戻します。

最初のアプローチはデータの不整合につながる可能性があるため、2 番目のアプローチを使用します。

管理オブジェクトのコンテキストが保存されていない場合、変更を元に戻すことができることはわかっていますが、

管理オブジェクトのコンテキストが保存されている場合、変更を元に戻すことはできますか?

コミュニティからの有用な回答が必要です。

提案してください。

4

1 に答える 1

1

管理オブジェクトのコンテキストが保存されている場合、変更を元に戻すことはできますか?

セーブ後?かもしれませんが、難しいかもしれません。ネットワーク操作用に別の管理対象オブジェクト コンテキストを設定し、それに を指定すると、NSUndoManager後でアンドゥ マネージャにすべてを前の状態にロールバックするように指示できます。

ただし、完了するまで変更を保存しない方が簡単です。元に戻すマネージャーを使用しても、実際にはあまり役に立ちません。すべての元に戻す操作を保存するために必要なメモリは、終了するまで保存されていないすべての変更を保持するためのメモリ使用量と少なくとも一致します。別の管理オブジェクト コンテキスト (子コンテキストまたは完全に別のコンテキスト) で作業している場合、エラー ケースの処理は、最初に変更を保存せずに MOC の割り当てを解除するのと同じくらい簡単です。

于 2013-02-07T19:04:31.760 に答える