Core data 防止删除核心数据NSManagedObject

Core data 防止删除核心数据NSManagedObject,core-data,nsmanagedobject,Core Data,Nsmanagedobject,我有一个NSArrayController子类,它设置了一个新插入对象的实例变量,并防止用户在该变量为零时删除它 我希望在实体子类中执行此操作。可以在awakeFromInsert方法中设置变量。有没有办法防止删除,一种: if (self.testVariable == 0) return; ? 我没有找到它,但可能遗漏了什么。在您的NSManagedObject中实现这一点: - (BOOL)validateForDelete:(NSError **)error 根据一些测试,我相信

我有一个NSArrayController子类,它设置了一个新插入对象的实例变量,并防止用户在该变量为零时删除它

我希望在实体子类中执行此操作。可以在awakeFromInsert方法中设置变量。有没有办法防止删除,一种:

if (self.testVariable == 0) return;   ?

我没有找到它,但可能遗漏了什么。

在您的NSManagedObject中实现这一点:

- (BOOL)validateForDelete:(NSError **)error

根据一些测试,我相信
validateForDelete
无法阻止按需要删除

validateForDelete
用于在删除之前执行添加的验证。从本质上讲,方法名称具有误导性。比如说

此外,
prepareForDelete
被称为previor,它将删除任何
Cascade
关系,并将任何
null
关系标记为null。因此,必须“退出”这些关系。或者更改您的数据模型,使其仅允许
Deny
,从而将这些关系单独保留在prepareForDelete中。这意味着对你的商业模式和逻辑采取强硬的反手策略

此外,当用户保存数据时,
Deny
关系被“拒绝”——这对于用户撤消和纠正这种情况来说可能太晚了

我认为最好的选择是取消激活控制器中绑定到
canRemove
方法的Remove按钮


是的,您的实现必须反映您的条件您的意思是:(BOOL)validateForDelete:(NSError**)错误{return(self.testVariable!=0);}??