我与我的核心数据模型中的3个实体有关系,下一个关系为A<<> B<< ----> C.
当A对象被删除时,如果A<<> B关系中不再有A,则必须删除B,如果B<<<< - > C关系。
我尝试使用以下命令配置关系:
第一个选项:
第二个选项:
第三种选择:
我尝试在B:
中使用prepareForDeletion和这个示例代码- (void) prepareForDeletion {
[super prepareForDeletion];
EntityC *entityC = self.entityC;
if (entityC && (entityC.isDeleted == NO)) {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isDeleted == NO"];
NSSet *setOfBs = [entityC.Bs filteredSetUsingPredicate:predicate];
if ([setOfBs count] == 0) {
[self.managedObjectContext deleteObject:entityC];
}
}
在最后一种情况下,我有一个随机的结果。有时它按预期工作,有时我只删除一个实体。
有没有简单的方法可以解决这个问题。我更喜欢使用像第一个或第二个的解决方案,但我认为只有使用第三个解决方案才有可能。