删除对象时Core Data合并错误

时间:2015-07-25 13:50:23

标签: ios swift core-data

我有A has many的实体BB belongs to A

当我从网络加载数据时,因为我读过执行 upsert 操作,核心数据是不可能的,或者不是它应该处理的方式,我去了删除/插入方式

当我尝试删除所有A时,我会收到Code=133020 NSMergeConflict。这是有道理的,因为:1)属于B的{​​{1}}实体最终会在哪里,2)我想要删除AB中。我真的只想更新delete cascade

话虽如此,很明显删除/更新不是要走的路(或者至少不是我这样做的方式)。那么处理这个问题的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

是的,删除更新还需要您跟踪多对多关系对象,并将它们重新分配给新对象。因为您还必须重新分配所有其他属性,这似乎比检查对象是否已存在要多得多。

我确定您的网络服务有一些独特的属性,例如idNumber。您可以使用它来首先进行查找。

let filteredAObjects = allAObjects.filter { $0.idNumber == idNumberFromWebService }
let objectToUpdate = filteredAObjects.count == 0 ? 
  NSEntityDescription.insertNewObjectForEntityWithName("A",
                      inManagedObjectContext: moc) as! A :
  filteredAObjects.first