是否可以删除和读取关系?
我不能在这里发布代码,因为它是一个过程非常复杂的大型项目。
假设我有 tableA <-->> tableB tableB 得到更新(即 tableB 对象将被删除并新的对象(重新)添加)。我检查来自 tableA 的对象是否与 tableB 有关系,我已经在一个带有服务器对象 ID 的数组中拥有它。我现在读取了 tableB 中的数据并读取了关系。关系出现故障,无法访问。添加或删除对象后,我将其保存。我究竟做错了什么?
是否可以删除和读取关系?
我不能在这里发布代码,因为它是一个过程非常复杂的大型项目。
假设我有 tableA <-->> tableB tableB 得到更新(即 tableB 对象将被删除并新的对象(重新)添加)。我检查来自 tableA 的对象是否与 tableB 有关系,我已经在一个带有服务器对象 ID 的数组中拥有它。我现在读取了 tableB 中的数据并读取了关系。关系出现故障,无法访问。添加或删除对象后,我将其保存。我究竟做错了什么?
我觉得我在这里误解了您的意图,但我会尝试并根据需要进行修改。首先,所有实体都应该以大写字母开头,所以我将使用TableA
andTableB
来代表我的实体。并且是 coredata 实体的可怕名称TableA
。TableB
它们非常通用,如果您决定在表格之外使用它们,它可能会真正混淆您的代码。特别是因为它是一个“过程非常复杂的庞大项目”。
这本质上是我相信你正在寻求的:
// defined elsewhere
NSManagedObjectContext *managedObjectContext;
// saving the the object that you want to connect to later
TableA *relationshipToA = self.AllTableBs.tableARelationship;
// remove all TableB objects from coredata as you are already doing
// ...
// // //
// insert new TableB objects setting their tableARelationship to relationshipToA
// ...
// //
// single example
TableB *bObject = [NSEntityDescription insertNewObjectForEntityForName:@"TableB" inManagedObjectContext:managedObjectContext];
bObject.tableARelationship = relationshipToA;
// save context
然后,当您尝试访问与 TableA 的对象关系时,它是有效的,反之亦然。
问题是在将对象插入 tableA 时引起的。关系对象来自不同的上下文。尽管我有合并策略NSMergeByPropertyStoreTrumpMergePolicy
,但该对象仍有无法解决的故障。我更改了代码,使两个对象都在相同的上下文中。它解决了这个问题。