概述:
我有一个使用核心数据的 iOS 项目
- 我有一个
Employees
实体和一个Department
实体。 - 1个部门可以包含很多员工
- 所以实体与实体
Department
之间存在“对多”关系Employees
,这种关系称为关系employees
,反向关系称为whichDepartment
目标一:
我想删除特定部门的所有员工
问题:
a) 以下是正确的,还是会导致突变或一些问题?
b)这是正确的方法吗?
请注意-removeEmployees
是在创建实体的子类时自动生成的方法
- (void) deleteAllEmployeesForDepartment: (Department*) requestedDepartment
{
[requestedDepartment removeEmployees:requestedDepartment.employees];
}
目标2:
- 我想根据某些条件删除员工
- 我正在为获取的记录删除快速枚举循环中的对象
问题:
c)以下是正确的,还是会导致一些突变?
d) 是否像在快速枚举中修改对象?
e) 有更好的方法吗?
请注意-removeEmployees
是在创建实体的子类时自动生成的方法
- (void) deleteAllType1EmployeesWithDepartment: (Department*) requestedDepartment
{
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"type == %i AND whichDepartment ==%i", 1, requestedDepartment.departmentID];
NSError *error;
NSArray *listOfEmployeesToBeDeleted = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
for(Employees *currentEmployee in listOfEmployeesToBeDeleted)
{
[self.managedObjectContext deleteObject:currentEmployee];
}
}