【问题标题】:Core data - DENY rule is not deleting destination objects related to the source object deleted核心数据 - DENY 规则不删除与已删除源对象相关的目标对象
【发布时间】:2013-03-21 10:39:48
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: ios core-data


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢马丁。我做了必要的更改,它工作正常:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 2016-10-27
    • 2016-11-07
    • 1970-01-01
    相关资源
    最近更新 更多