Ios 如何将ManagedObjectID传递给主线程

Ios 如何将ManagedObjectID传递给主线程,ios,core-data,nsmanagedobjectcontext,nsmanagedobjectid,Ios,Core Data,Nsmanagedobjectcontext,Nsmanagedobjectid,我正在使用自己的上下文将ManagedObject保存在后台线程上。然后,我希望使用托管对象上下文将通知发送回主线程,以便使用其数据 根据文档,看起来我应该将id传递给主线程而不是对象 这是正确的吗?那么我该怎么处理那个Id呢?我是否应该使用ID从主线程获取核心数据,以便在主线程上获取ManagedObject?您正确地理解了将对象ID传递回主线程的过程。完成此操作后,使用objectWithID:方法,传递从另一个线程发送的NSManagedObjectID,将对象从主线程的NSManaged

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

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


这是正确的吗?那么我该怎么处理那个Id呢?我是否应该使用ID从主线程获取核心数据,以便在主线程上获取ManagedObject?

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

NSManagedObject *objectForThisThread = [managedObjectContextForThisThread objectWithID:managedObjectID];

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

NSManagedObject *objectForThisThread = [managedObjectContextForThisThread objectWithID:managedObjectID];

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

- (NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID error:(NSError **)error
此方法从不为该对象返回错误

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


参见。

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

- (NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID error:(NSError **)error
此方法从不为该对象返回错误

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


请参阅。

@Helium3另请参阅@Helium3另请参阅MO不能在线程之间传输。这将打破遏制。使用如下所示的objectID,线程之间不能传输。这将打破遏制。如果上下文中还没有对象,请使用如下所示的objectID ill objectWithID从磁盘获取该对象?什么设置NSManagedObjectID的值?我正在创建一个NSManagedObject子类的对象,保存后我想发送ID,但我没有设置ID。它是否在保存方法中设置?对不起,我想我误解了你的问题。今晚晚些时候,我将尝试处理整个流程,因为我必须做一些研究,以便为您提供完整的信息。如果上下文还没有对象,objectWithID是否会从磁盘获取该对象?NSManagedObjectID的值是如何设置的?我正在创建一个NSManagedObject子类的对象,保存后我想发送ID,但我没有设置ID。它是否在保存方法中设置?对不起,我想我误解了你的问题。今晚晚些时候,我将尝试解决整个流程,因为我将不得不做一些研究,为您提供完整的图片。