0

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

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

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

我没有找到它,但也许我错过了一些东西。

4

2 回答 2

1

在你的 NSManagedObject 中实现它:

- (BOOL)validateForDelete:(NSError **)error
于 2012-09-24T15:37:54.637 回答
1

基于一些测试,我相信这validateForDelete将无法阻止所需的删除。

validateForDelete用于在删除之前执行添加验证。本质上,方法名称具有误导性。就像例如,对于

此外,prepareForDelete被称为优先,将删除任何Cascade关系并将任何关系标记为空Nullify。因此,必须“退出”。或更改您的数据模型以仅允许Deny将这些关系单独留在 prepareForDelete 中。这是对您的业务模型和逻辑施加严厉的反手。

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

我相信最好的选择是取消激活绑定到canRemove控制器中的方法的删除按钮。

一些可靠的意见 SO的一些可能的解决方案

于 2013-04-26T20:57:29.210 回答