ManagedObjectを独自のコンテキストを持つバックグラウンドスレッドに保存しています。次に、データを使用できるように、管理対象オブジェクトのコンテキストを含む通知をメインスレッドに送り返したいと思います。
ドキュメントによると、代わりにオブジェクトではなくメインスレッドにIDを渡す必要があるようです。
これは正しいですか、そのIDで何をすべきですか?メインスレッドでManagedObjectを取得するには、IDを使用してメインスレッドからコアデータをフェッチする必要がありますか?
ManagedObjectを独自のコンテキストを持つバックグラウンドスレッドに保存しています。次に、データを使用できるように、管理対象オブジェクトのコンテキストを含む通知をメインスレッドに送り返したいと思います。
ドキュメントによると、代わりにオブジェクトではなくメインスレッドにIDを渡す必要があるようです。
これは正しいですか、そのIDで何をすべきですか?メインスレッドでManagedObjectを取得するには、IDを使用してメインスレッドからコアデータをフェッチする必要がありますか?
オブジェクトIDがメインスレッドに戻されることを理解しているのは正しいです。それが完了したら、objectWithID:
メソッドを使用して、他のスレッドから送信されたものを渡し、NSManagedObjectID
メインスレッドのNSManagedObjectContext
インスタンスからオブジェクトを取得します。
NSManagedObject *objectForThisThread = [managedObjectContextForThisThread objectWithID:managedObjectID];
別の方法は、次の方法を使用することです
- (NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID error:(NSError **)error
このメソッドは、そのオブジェクトの障害を返すことはありません。
バックスレッドで保存します。そのメソッドを使用すると、バックグラウンドで保存されたオブジェクトを取得できます。
NSManagedObjectContext
クラスリファレンスを参照してください。