0

ManagedObjectを独自のコンテキストを持つバックグラウンドスレッドに保存しています。次に、データを使用できるように、管理対象オブジェクトのコンテキストを含む通知をメインスレッドに送り返したいと思います。

ドキュメントによると、代わりにオブジェクトではなくメインスレッドにIDを渡す必要があるようです。

これは正しいですか、そのIDで何をすべきですか?メインスレッドでManagedObjectを取得するには、IDを使用してメインスレッドからコアデータをフェッチする必要がありますか?

4

2 に答える 2

3

オブジェクトIDがメインスレッドに戻されることを理解しているのは正しいです。それが完了したら、objectWithID:メソッドを使用して、他のスレッドから送信されたものを渡し、NSManagedObjectIDメインスレッドのNSManagedObjectContextインスタンスからオブジェクトを取得します。

NSManagedObject *objectForThisThread = [managedObjectContextForThisThread objectWithID:managedObjectID];
于 2013-03-05T21:49:49.220 に答える
1

別の方法は、次の方法を使用することです

- (NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID error:(NSError **)error

このメソッドは、そのオブジェクトの障害を返すことはありません。

バックスレッドで保存します。そのメソッドを使用すると、バックグラウンドで保存されたオブジェクトを取得できます。

NSManagedObjectContextクラスリファレンスを参照してください。

于 2013-03-05T21:52:11.077 に答える