1

2つのテーブルがあります。課題と質問。両方のテーブルには、あまりにも多くの関係があります。質問への割り当てからの削除ルールは拒否され、質問から割り当てへの削除は無効になります。

課題が削除されたら、その課題に関連するすべての質問を削除して、他の課題との参照が残っている質問を残します。これが、DENY削除ルールが割り当てから質問に設定されている理由です。

課題を削除する前に、以下に示すように、課題の参照を課題から削除していることを確認してください。

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;また、ループ内で、1つの「削除する割り当て」だけでなく、すべての割り当てが質問から削除されることにも注意してください。

于 2013-03-21T11:00:58.227 に答える