我有 1 个 ToDo 对象,我正在创建 1 个 Report 对象。它们都是由同一个 NSManagedObjectContext 的不同 MOC 创建的 NSManagedObject。需要说明的是,NSManagedObjectContext 是我的 PersistenceStore 类中的一个 ivar。
ToDo 对象来自一个数组,该数组继承自 PersistenceStore 中的一个方法,该方法返回包含保存在 NsPresistentStoreCoordinator 中的对象的数组。 todo 对象作为属性传递给我应该初始化报告的类。
报告类是从 PersistenceStorage NSManagedObject 的 MOC 初始化的,代码行如下:
NSManagedObjectContext *context = [store managedObjectContext];
Report *report = [NSEntityDescription insertNewObjectForEntityForName:@"Report" inManagedObjectContext:context];
Todo 和 Report 对象具有一对一的关系。但是我尝试设置关系时出现错误
<\NSInvalidArgumentException> Illegal attempt to establish a relationship 'todo' between objects in different contexts
在我看来,我使用的是相同的 NSManagedObjectContext。有人可以帮助我吗?
最佳答案
查找另一个实体的上下文:
NSManagedObjectContext *context = [store managedObjectContext];
NSManagedObject *ctx = [context existingObjectWithID:[todo objectID] error:&error];
Report *report = [NSEntityDescription insertNewObjectForEntityForName:@"Report" inManagedObjectContext:ctx];
关于ios - 无法在 NSManagedObjects 之间建立关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13234316/