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

时间:2013-04-26 12:35:46

标签: ios core-data nsmanagedobjectcontext

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

    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 个答案:

答案 0 :(得分:2)

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

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

类似于下面的粗略代码

NSManagedObjectID *objectID = [parentEntry objectID];

id newContextParentEntry = [_createNewContext objectWithID:objectID]; 

entry.entryFromParent = newContextParentEntry;