我正在使用自己的上下文在后台线程上保存ManagedObject。然后,我想通过托管对象上下文向主线程发送通知,以便我可以使用其数据。
根据文档看起来我应该将id传递给主线程而不是对象。
这是正确的,那我该怎么办?我是否应该使用ID从主线程获取核心数据以获取主线程上的ManagedObject?
答案 0 :(得分:3)
您理解将对象ID传递回主线程是正确的。完成后,使用objectWithID:
方法,传递从另一个线程发送的NSManagedObjectID
,将对象从主线程的NSManagedObjectContext
实例中取出。
NSManagedObject *objectForThisThread = [managedObjectContextForThisThread objectWithID:managedObjectID];
答案 1 :(得分:1)
另一种方法是使用以下方法
- (NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID error:(NSError **)error
此方法永远不会为该对象返回错误。
在你的后台线程中进行保存。使用该方法将允许检索保存在后台的对象。