在子 NSManagedObjectContext 中创建与父实体有关系的实体

Posted

技术标签:

【中文标题】在子 NSManagedObjectContext 中创建与父实体有关系的实体【英文标题】:create entity in child NSManagedObjectContext with relationship to parent entity 【发布时间】:2013-04-26 12:35:46 【问题描述】:

我正在为编辑实体创建临时上下文:

    NSManagedObjectContext *parent = [Default managedObjectContext];//my main managed context
    NSManagedObjectContext *_createNewContex = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
    [_createNewContex setParentContext:parent];

在 _createNewContex 中,我正在尝试创建我的临时条目以进行编辑。

   MyTempEntry *entry = [MyTempEntry createInContext:_createNewContex];

创建正常,但如果尝试从父上下文为条目分配关系:

  entry.entryFromParent = parentEntry;

我有错误:

* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“非法尝试在不同上下文中的对象之间建立关系“entryFromparent”

【问题讨论】:

【参考方案1】:

你不能在上下文之间使用对象。您需要使用其 objectID 或其他值在辅助上下文中查找该对象。

然后可以使用来自辅助上下文的对象来创建关系。

类似于下面的粗略代码

NSManagedObjectID *objectID = [parentEntry objectID];

id newContextParentEntry = [_createNewContext objectWithID:objectID]; 

entry.entryFromParent = newContextParentEntry;

【讨论】:

以上是关于在子 NSManagedObjectContext 中创建与父实体有关系的实体的主要内容,如果未能解决你的问题,请参考以下文章

父 NSManagedObjectContext 在子保存后没有变化,但仅在发布模式下(在调试模式下工作)

在子上下文中保存核心数据不起作用

保存后在子上下文中创建的新对象在父上下文中不存在

父/子 NSManagedObjectContext 不起作用

NSManagedObjectContext:自动更新与否?

NSManagedObjectContext:撤消保存操作?