私のアプリケーションにはNSOperation
、マネージド オブジェクトを取得して操作するサブクラスがあります。また、私のアプリケーションはデータベースから行を定期的に削除するため、次の競合状態が発生する可能性があります。
- バックグラウンド操作は、(スレッド固有のコンテキストから) オブジェクトの束をフェッチします。これらのオブジェクトを繰り返し処理し、それらのプロパティで何かを行います。
- メインの管理対象オブジェクト コンテキストで一連の行が削除されます。
- バックグラウンド操作は、メイン コンテキストから削除されたオブジェクトのプロパティにアクセスします。これにより、
'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault'
理想的には、NSOperation によってフェッチされたオブジェクトは、メイン コンテキストで削除された場合でも操作できます。これを達成するために私が考えることができる最良の方法は、次のいずれかです。
[request setReturnsObjectsAsFaults:NO]
Core Data がメイン コンテキストに存在しなくなったオブジェクトの障害を解決しようとしないことを確認するために呼び出します。ここでの問題は、オブジェクトの関係にアクセスする必要があるかもしれないということです。- 前もってマネージド オブジェクトを繰り返し処理し、必要なプロパティを別の非マネージド オブジェクトにコピーします。ここでの問題は、コピーを完了する前にメインコンテキストでオブジェクトが削除された場合に備えて、この部分を同期/ロックする必要があることです。
明らかな何かが欠けていますか?私が達成しようとしていることは、あまりにも異常なことではないようです。ご協力いただきありがとうございます。