获取后核心数据关系为零

时间:2014-06-26 11:18:27

标签: core-data nsfetchedresultscontroller

这是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之间的关系。将关系设置为多对多解决了它。

1 个答案:

答案 0 :(得分:2)

我弄明白了这个问题。 Temp和Test之间的关系是一对多的,所以每当我将一个Test对象添加到Temp时,它就删除了之前的Temp和Test之间的关系。将关系设置为多对多解决了它。