【发布时间】:2015-08-30 02:47:48
【问题描述】:
我有一个 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 方法的删除按钮。
【讨论】: