核心数据 – DENY规则不删除与删除的源对象相关的目标对象

我有两张桌子。 作业和问题。 这两个表之间的关系太多了。 从作业中删除规则为DENY,从问题到作业为Nullify。

当一项任务被删除时,我想删除与该任务相关的所有问题,留下仍然有其他任务参考的问题。 这就是DENY删除规则从Assignment to Questions设置的原因。

在删除作业之前,我确保我从作业中删除问题参考,如下所示:

Assignment *assignment = assignment to be deleted; for (SMQuestion *question in [assignment.questions allObjects]) { //NSLog(@"The Question ID is %@",question.questionId); //[question removeAssignmentsObject:assignment]; [assignment removeQuestionsObject:question]; //question.assignments = nil; } [[[CoreDataManager sharedObject] managedObjectContext] deleteObject:assignment]; [[[CoreDataManager sharedObject] managedObjectContext] save:&error]; 

但删除作业后,没有问题从数据库中删除。 有什么我在这里做错了吗?

DENY规则不会导致任何对象被删除。 它只防止源对象被删除,如果它与目标对象有关系。

在这种情况下(从作业到问题的拒绝规则),如果与任何问题有关,则不能删除作业。

你的代码只删除从作业到问题的关系。 您必须检查问题是否还有其他遗留问题,否则请删除问题。

还要注意question.assignments = nil; 在循环中删除问题中的所有赋值,而不仅仅是一个“要删除的赋值”。