4

では、データUITableViewControllerに を使用しNSFetchedResultsControllerます。別のスレッドでいくつかのオブジェクトのインポートを開始する場合を除いて、すべて正常に機能します。NSOperationQueueオブジェクトを my に挿入するを使用しますManagedObjectContext。これは別のビューで発生します。はこれNSFetchedResultsControllerが気に入らないようで、コンソールに次のように書き込みます。

重大なアプリケーション エラーです。-controllerDidChangeContent: の呼び出し中に、NSFetchedResultsController のデリゲートから例外がキャッチされました。userInfo (null) を使用してセルの 2 つのアニメーションを作成しようとしています

どうやら、新しいオブジェクトを取得しようとしています。

並行性のトピックについては、Core Data Programming Guideに for each スレッドを使用するようなことが書かManagedObjectContextれていますが、それはかなり複雑に聞こえます。

実際に独自のNSOperationサブクラスを作成する必要があるかどうか、その中に を作成する必要があるかどうか、または の更新をしばらくManagedObjectContext防ぐことができるかどうかはわかりません。NSFetchedResultsController

助けていただければ幸いです、ファビアン

4

1 に答える 1

4

NSManagedObjectContextスレッドごとに必要です。申し訳ありません。

コンテキストにアクセスするのは NSFetchesResultsController だけではありません。coreData は、コンテキストが必要になるまでデータをフェッチしません。いつでもアクセスできる可能性があります。

ただし、スレッドごとに作成する必要があるのはコンテキストだけです。マネージド オブジェクト コンテキストを作成するデリゲートにメソッドを記述し、それを各 NSOperations で呼び出すだけです。これにより、すべてが同じコンテキストを使用するのではなく、スレッドごとに作成されます。

メイン スレッドのマネージド コンテキストも、このメソッドで作成できます。

于 2010-12-12T17:06:38.600 に答える