我将 ManagedObject 保存在具有自己上下文的后台线程上。然后,我想使用托管对象上下文将通知发送回主线程,以便我可以使用它的数据。
根据文档,看起来我应该将 id 传递给主线程而不是对象。
这是正确的,那我应该怎么处理那个Id呢?我应该使用 ID 从主线程获取核心数据以在主线程上获取 ManagedObject 吗?
我将 ManagedObject 保存在具有自己上下文的后台线程上。然后,我想使用托管对象上下文将通知发送回主线程,以便我可以使用它的数据。
根据文档,看起来我应该将 id 传递给主线程而不是对象。
这是正确的,那我应该怎么处理那个Id呢?我应该使用 ID 从主线程获取核心数据以在主线程上获取 ManagedObject 吗?
您正确理解将对象 ID 传递回主线程。完成此操作后,使用该objectWithID:
方法传递NSManagedObjectID
从另一个线程发送的消息,将对象从主线程的NSManagedObjectContext
实例中取出。
NSManagedObject *objectForThisThread = [managedObjectContextForThisThread objectWithID:managedObjectID];
另一种方法是使用以下方法
- (NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID error:(NSError **)error
此方法从不返回该对象的错误。
在你的后面线程做一个保存。使用该方法将允许检索保存在后台的对象。