在NSManagedObjectModel中,某些对象与其他对象相关联,并具有“删除规则”。例如' cascade',这意味着当删除初始对象时,相关对象也会随后被删除。
显然在一个设计良好的数据库中,这不会是一个问题,但我最近花了一段时间试图弄清楚为什么有些对象被删除并意识到我不小心设置了删除规则级联,这不应该是已经。
这让我想知道:有没有办法判断一个对象是被删除规则删除了还是被代码中的其他地方删除了?
我还想知道是否可以通过为NSManagedObjects设置等效的析构函数来实现这一点,例如:在对象即将被删除时运行一段代码。
答案 0 :(得分:0)
这让我想知道:有没有办法判断一个对象是被删除规则删除了还是被代码中的其他地方删除了?
事实之后,没有。任何交易历史都没有“删除日志”可以这么说。因此,如果它被删除,那么它的任何痕迹都将消失,除非你自己手动做了一些事情。
我还想知道是否可以通过为NSManagedObjects设置等效的析构函数来实现这一点,例如:在对象即将被删除时运行一段代码。
是。 validateForDelete:
上的NSManagedObject
方法可以实现并有效地“劫持”,以便在Core Data调用时执行其他操作。是否通过级联或直接删除发生了删除...无论如何我都没有看到辨别出这种差异。
答案 1 :(得分:0)
-prepareForDeletion
实例之前调用 NSManagedObject
。这是运行预删除代码的地方。
我不知道如何以编程方式查找删除对象的原因。