gpt4 book ai didi

objective-c - 核心数据删除规则和多对多关系

转载 作者:太空狗 更新时间:2023-10-30 03:23:16 24 4
gpt4 key购买 nike

假设您有部门和员工,每个部门有多名员工,但每个员工也可以属于多个部门。

所以员工和部门之间是多对多的关系。删除部门时,我想删除仅属于该部门的所有员工,并取消同时属于另一个部门的所有员工与该部门的关系。

双向的级联规则能做到吗?还是级联规则会自动删除一个部门的所有员工,而不管其他从属关系?

最佳答案

级联规则会自动删除目的地的对象。因此,如果您删除一个部门,则无论员工在多少个部门中,都将被删除。

听起来您想要的行为更微妙一些,只删除“孤立的”员工——即那些没有部门的员工。当您删除一个部门时,找到这些部门的一个好方法是执行如下操作:

NSManagedObject *doomedDepartment = // get the department to be deleted

NSSet *employees = [doomedDepartment valueForKey:@"employees"];
NSSet *orphanedEmployees = [employees filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"departments.@count == 1"]];
for (NSManagedObject *orphanedEmployee in orphanedEmployees) {
[managedObjectContext deleteObject:orphanedEmployee];
}

[managedObjectContext deleteObject:doomedDepartment];

关于objective-c - 核心数据删除规则和多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1612356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com