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