这是Best practice for temporary entities in core data?的后续问题。我提出了一个新主题,因为我认为这是一个不同的问题。
当我在子上下文中设置临时实体时,我与已存在于商店中的实体建立关系。这没有错误,使用objectID来传递跨线程的实体。我使用断点来验证关系是否正常。
现在,当我到表中显示所有临时对象(使用NSFetchedResultsController
)时,关系为零。临时对象的所有其他属性都已到位,而不是关系。
所以我肯定在这里遗漏了一些东西。
这是我尝试过的一些代码:
Temp *temp = [NSEntityDescription insertNewObjectForEntityForName: @"Temp" inManagedObjectContext: myImportContext];
NSManagedObjectID *objectID = self.test.objectID;
if (objectID)
{
NSError *error = nil;
Test *t = (Test *)[myImportContext existingObjectWithID:objectID error: &error];
if (error == nil)
[temp addTestObject: t];
}
更新:我忘了添加所有这些都在后台线程上运行。
更新2:我发现了问题。 Temp和Test之间的关系是一对多的,所以每当我将一个Test对象添加到Temp时,它就删除了之前的Temp和Test之间的关系。将关系设置为多对多解决了它。
答案 0 :(得分:2)
我弄明白了这个问题。 Temp和Test之间的关系是一对多的,所以每当我将一个Test对象添加到Temp时,它就删除了之前的Temp和Test之间的关系。将关系设置为多对多解决了它。