如何将ManagedObjectID传递给主线程

时间:2013-03-05 21:42:41

标签: ios core-data nsmanagedobjectcontext nsmanagedobjectid

我正在使用自己的上下文在后台线程上保存ManagedObject。然后,我想通过托管对象上下文向主线程发送通知,以便我可以使用其数据。

根据文档看起来我应该将id传递给主线程而不是对象。

这是正确的,那我该怎么办?我是否应该使用ID从主线程获取核心数据以获取主线程上的ManagedObject?

2 个答案:

答案 0 :(得分:3)

您理解将对象ID传递回主线程是正确的。完成后,使用objectWithID:方法,传递从另一个线程发送的NSManagedObjectID,将对象从主线程的NSManagedObjectContext实例中取出。

NSManagedObject *objectForThisThread = [managedObjectContextForThisThread objectWithID:managedObjectID];

答案 1 :(得分:1)

另一种方法是使用以下方法

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

此方法永远不会为该对象返回错误。

在你的后台线程中进行保存。使用该方法将允许检索保存在后台的对象。

请参阅NSManagedObjectContext class reference