2013-03-21 101 views
1

我有两个表。作业和问题。两个表之间的关系太多。从作业分配中删除规则是DENY,从问题到分配的规则是Nullify。核心数据 - DENY规则不删除与源对象相关的目标对象删除

当某个作业被删除时,我想删除与该作业相关的所有问题,留下仍然有其他作业参考的问题。这就是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]; 

但删除分配后,没有任何的问题,都可以从数据库中删除。有什么我在这里做错了吗?

回答

1

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

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

您的代码只删除从作业到问题的关系。您必须检查问题是否还有其他分配,并且删除其他问题。

另请注意,循环中的question.assignments = nil;将从问题中删除全部赋值,而不仅仅是一个“要删除的赋值”。

+0

谢谢马丁。我做了所需的更改,它工作正常:) – Subhash 2013-03-21 11:39:44

相关问题