0

この投稿から、エンティティのすべてのインスタンスをすべてフェッチして削除することで、それらをすべて削除できることがわかりました。除去を行うためのより効率的な方法はありませんか?私の考慮事項は、そのエンティティ内に何千ものレコードがあることです。

4

2 に答える 2

1

CoreDataはデータベースではなくORMレイヤーであるため、これ以上効率的な方法はありません。したがって、オブジェクトを処理し、それらを削除したい場合は、それらを削除する必要があります。

調査したいトリックは、削除するオブジェクトと1対多の関係を持つ親オブジェクトを作成することです。基本的に、大きなテーブルのすべてのエントリを指すものを1つだけ持つことができます。モデルの関係にカスケード削除オプションを設定します。次に、パージするときが来たら、親オブジェクトを削除するだけです。遅延読み込みのため、他のオブジェクトを読み込もうとしません。

そうは言っても、私は自分で試したことはありませんが、実行可能な選択肢のようです。

于 2012-07-31T11:31:55.467 に答える
0

このエンティティのすべてのインスタンスが自己完結型である特殊なケースでは、バッキングファイルを削除して管理オブジェクトを再初期化する方が迅速です。これは、一時的なものが独自のストア内にあるようにデータを配置できる場合にのみ機能します。

それ以外の場合は、コアデータの代わりにデータベースへの直接アクセスを使用することで、より良い結果が得られる可能性があります。

于 2012-07-31T11:32:29.943 に答える