0

私はさまざまなプロジェクトでCoreDataを使用してきたので、スレッドからメインアプリへのコンテキストマージを処理する方法を知っています。

私の問題は、私が取り組んでいる新しいアプリケーションでは、メインコンテキストと、アプリケーションの存続期間全体にわたって存続するスレッドコンテキストがありますが、通常は、スレッド化された呼び出しごとにコンテキストを作成したことです。

そのため、メインスレッドでオブジェクトを変更する場合の対処方法がわかりません。それらをコンテキストスレッドにマージする必要がありますか?どのように ?各呼び出しの前に、コンテキストスレッドにメインコンテキストから再同期するように依頼することは可能ですか?

4

2 に答える 2

0

メインスレッドからNSManagedObjectContextDidSaveNotificationをリッスンし、必要な場所にマージできます。私の提案は、アプローチを変更し、メインスレッドからの保存を行わないことです。メインスレッドをデータベースIOから遠ざけ、バックグラウンドで同期する必要があるMOCの同期を維持します。

于 2012-10-03T18:27:22.573 に答える
0

他のコンテキストが実行しているタスクを知らなければ、他のコンテキストを最新の状態に保つための最良のアプローチが何であるかを言うのは難しいです。

NSManagedObjectContextのメソッドを使用してみてsetStalenessInterval:、そのコンテキストで操作するすべての管理対象オブジェクトが、操作refreshObject:mergeChanges:が終了したときに使用して障害に戻されることを確認できます。

于 2012-10-03T17:24:23.943 に答える