1

我有两张桌子。作业和问题。这两个表之间的关系太多了。从作业到问题的删除规则是拒绝,从问题到作业的删除规则是无效。

删除作业后,我想删除与该作业相关的所有问题,留下仍然与其他作业有参考的问题。这就是从作业到问题设置拒绝删除规则的原因。

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

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];

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

4

1 回答 1

1

DENY 规则不会导致任何对象被删除。仅当源对象与目标对象有关系时,它才会阻止源对象被删除。

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

您的代码仅删除作业与问题的关系。您必须检查该问题是否还有其他作业,否则删除该问题。

另请注意,question.assignments = nil;在您的循环中,会从问题中删除所有作业,而不仅仅是一个“要删除的作业”。

于 2013-03-21T11:00:58.227 回答