我有一个NSArrayController子类,它设置一个新插入对象的实例变量,并阻止用户在该变量为零时将其删除。
我想在实体子类中执行此操作。可以在awakeFromInsert方法中设置变量。有没有办法防止删除,一种:
if (self.testVariable == 0) return; ?
我没有找到它,但也许我错过了一些东西。
答案 0 :(得分:1)
在NSManagedObject中实现它:
- (BOOL)validateForDelete:(NSError **)error
答案 1 :(得分:1)
基于一些测试,我相信validateForDelete
无法阻止所需的删除。
validateForDelete
用于执行添加验证之前以进行删除。实质上,方法名称具有误导性。就像例如,
此外,prepareForDelete
被称为先前,并将删除任何Cascade
关系,并将任何Nullify
标记为空。因此,那些必须“退出”。或者将您的数据模型更改为仅允许Deny
允许将这些关系单独留在prepareForDelete中。这是对你的商业模式和逻辑采用僵硬的反手。
此外,当用户保存数据时,Deny
关系被“拒绝” - 对于用户撤消和纠正这种情况可能为时已晚。
我认为最好的选择是取消激活Controller中canRemove
方法绑定的删除按钮。