我使用sqlite作为后端的Core Data。似乎当您为实体关系设置'on delete'时,'cascade'核心数据不会使用后端删除。核心数据简单地删除循环中的所有相关数据。当我尝试删除具有大量相对对象的对象时,它给了我额外的延迟。首先,它会完成所有相对故障对象,然后逐个删除它们。我可以从日志中看到它。
我认为如果我使用sqlite作为Core Data的后端,'cascade'删除规则将在sqlite'create table statement'的帮助下完成。
我想念某事吗?是否有可能强制Core Data在sqlite后端使用级联删除?
UPD:
正如@Mundi建议的那样。我已通过以下方式解决了这个问题:
后台任务按以下方式删除:
答案 0 :(得分:1)
正确,巨大的删除和插入操作可能会对性能造成压力。这些删除是否由删除规则引起并不重要。
最佳解决方案是“手动”自行删除项目。覆盖父管理对象子类中的方法willSave
,检查deleted
标志并自行删除子项。
如果要删除的记录很多(检查多少),您应该能够通过删除批次的记录(可能一次只有几百个)并保存来消除性能问题每批后。