在子 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 不起作用