Core data 取数后核心数据关系为零
这是我们的后续问题。我提出了一个新的话题,因为我认为这是一个不同的问题 当我在子上下文中设置临时实体时,我会与存储中已有的实体建立关系。使用objectID传递实体accross线程,这样做不会出错。我使用断点来验证关系是否正常 现在,当我转到表以显示所有临时对象时(使用Core data 取数后核心数据关系为零,core-data,nsfetchedresultscontroller,Core Data,Nsfetchedresultscontroller,这是我们的后续问题。我提出了一个新的话题,因为我认为这是一个不同的问题 当我在子上下文中设置临时实体时,我会与存储中已有的实体建立关系。使用objectID传递实体accross线程,这样做不会出错。我使用断点来验证关系是否正常 现在,当我转到表以显示所有临时对象时(使用NSFetchedResultsController),关系为零。临时对象的所有其他属性都已就位,只是关系没有就位 所以我肯定错过了一些东西 以下是我尝试过的一些代码: Temp *temp = [NSEntityDescrip
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之间的关系是一对多的,所以每次我向Temp添加一个测试对象时,它都会删除前一个Temp和Test之间的关系。将关系设置为多对多解决了这个问题。我解决了这个问题。Temp和Test之间的关系是一对多的,所以每次我向Temp添加一个测试对象时,它都会删除前一个Temp和Test之间的关系。将关系设置为多对多解决了此问题。据我所知,在您调用对该上下文的保存,或者(取决于您的结构)对父上下文的保存之前,您的子上下文不会一直保存到数据存储。在尝试调用
NSFetchedResultsController
之前是否保存了上下文?此外,我还可以从实用书架上强烈推荐Marcus S.Zarra撰写的这篇文章——《iOS、OS X和iCloud的核心数据、第二版、数据存储和管理》(2013年1月)。没错,我的实体是临时的,因此在用户想要保存它们之前,我不会将它们保存到存储中。对于NSFetchedResultsController
,这没有问题,因为我使用的是子上下文。该表可以很好地加载有关临时实体的所有信息,但关系为零的情况除外。我有扎拉的书和蒂姆·罗德利的书。我会继续挖掘。