获取后核心数据关系为零

koe*_*oen 2 core-data nsfetchedresultscontroller

这是核心数据中临时实体的最佳实践的后续问题. 我做了一个新话题,因为我认为这是一个不同的问题。

当我在子上下文中设置临时实体时,我会与商店中已有的实体建立关系。这工作没有错误,使用 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];
}
Run Code Online (Sandbox Code Playgroud)

更新:我忘了补充说所有这些都在后台线程上运行。

更新2:我想出了问题。Temp和Test的关系是一对多的关系,所以每次给Temp添加Test对象,就删除了之前的Temp和Test的关系。将关系设置为多对多解决了它。

koe*_*oen 5

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