如何在Core Data中定义条件级联删除规则?

时间:2012-02-13 22:07:26

标签: iphone ios4 core-data cascading-deletes

我的对象图包含两个实体:具有一对多关系的作者和书(一位作者可能会写很多书)

我希望删除一本书时,作者也会被删除,但前提是数据库中没有其他书籍连接到该作者。 (这意味着只有在删除最后一位作者的书时才应删除作者)

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:3)

您可以在-prepareForDeletion上的NSManagedObject方法中添加删除逻辑。您应该能够断言您想要的任何政策。

答案 1 :(得分:1)

我希望有条件级联删除规则这样的东西,但假设没有,我使用了常规的无效规则,然后对删除实现了一些特殊处理,如下所示:

- (IBAction) deleteBook:(id)sender { // or whatever method handles the deletion
    NSManagedObjectContext *context = // get a ref to the context
    Book *bookToDelete = // get the selected book
    if (bookToDelete.authorMember && [bookToDelete.authorMember.bookMembers count] == 1)
        [context deleteObject:bookToDelete.authorMember]; 
   [context deleteObject:bookToDelete];
}