核心数据删除所有关系实体

时间:2017-03-21 08:08:12

标签: ios swift core-data cascading-deletes batch-delete

假设我有核心数据和三个实体:部门,员工,库存 因此,每个部门都可以拥有更多员工,每个员工都可以拥有更多作为库存记录的项目。

Department <--->> Employee <---->> Inventory

现在说,我们有方法(服务,...)返回部门员工的新列表。(假设这可能很快发生。)

逻辑是我们删除特定部门的所有Employee实例,然后插入新的实例。

最好的方法是(对我来说),我可以这样做:

 let employees_local = myDepartment.employees
 if let employees = employees_local {
      myDepartment.removeEmployees(employees)
 }

但是这(在我的理解中)只删除那些对象之间的关系而不删除所有这些对象。

我知道您删除所有实体的解决方案(删除所有员工) 例如:this postthis one

我甚至知道我可以从ios 9上进行批量删除。 Like here

我的问题是,是否有更快/更好的方法来做到这一点。不应该有办法,你告诉核心数据删除父母没有关系的所有对象吗?

1 个答案:

答案 0 :(得分:2)

使用您在上面看到的示例链接为“this one”。

如果使用通过检查与Department的关系为nil来过滤Employees的谓词,则只返回所需的数据项。然后我建议你删除所有这些。