Objective c 如何判断NSManagedObject何时被删除规则删除

Objective c 如何判断NSManagedObject何时被删除规则删除,objective-c,core-data,swift,nsmanagedobject,Objective C,Core Data,Swift,Nsmanagedobject,在NSManagedObjectModel中,一些对象通过“删除规则”(如“级联”)与其他对象相关,这意味着删除初始对象时,相关对象也会随之删除 显然,在一个设计良好的数据库中,这不会是一个问题,但我最近花了一段时间试图找出某些对象被删除的原因,并意识到我意外地将一个删除规则设置为级联(cascade),这是不应该的 这让我想知道:有没有一种方法可以判断一个对象是被删除规则删除的,还是被代码中的其他地方删除的 我还想知道,通过为NSManagedObjects设置等效的析构函数,例如在对象即将被

在NSManagedObjectModel中,一些对象通过“删除规则”(如“级联”)与其他对象相关,这意味着删除初始对象时,相关对象也会随之删除

显然,在一个设计良好的数据库中,这不会是一个问题,但我最近花了一段时间试图找出某些对象被删除的原因,并意识到我意外地将一个删除规则设置为级联(cascade),这是不应该的

这让我想知道:有没有一种方法可以判断一个对象是被删除规则删除的,还是被代码中的其他地方删除的

我还想知道,通过为NSManagedObjects设置等效的析构函数,例如在对象即将被删除时运行一段代码,这是否可能

这让我想知道:有没有一种方法可以判断一个对象是被删除规则删除的,还是被代码中的其他地方删除的

事实上,没有。可以说,没有包含任何事务历史记录的删除日志。所以,如果它被删除了,那么它曾经存在的任何痕迹都将消失,除非你自己手动做了一些事情

我还想知道,通过为NSManagedObjects设置等效的析构函数,例如在对象即将被删除时运行一段代码,这是否可能

对。NSManagedObject上有validateForDelete:方法,当核心数据调用该方法时,您可以实现并有效地劫持该方法以执行其他一些操作。无论该删除是通过级联还是直接被删除。。。我还没有看到任何人能够分辨出这种差异。

-preparefordelection是在即将删除NSManagedObject实例之前调用的。这是运行预删除代码的地方


我不知道如何以编程方式找出删除对象的原因。

父实体可以知道删除规则,并通过上面的钩子进行相应操作。这是真的,但这只是规则,对吗?它会告诉你,即使删除不是通过级联执行的,规则也会设置为级联。我猜,你必须从某个地方开始。如果父项被删除,触发子项的删除,则子项现在的行为可能与单独删除它的情况不同。