防止删除核心数据NSManagedObject

时间:2012-09-24 15:18:21

标签: core-data nsmanagedobject

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

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

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

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

2 个答案:

答案 0 :(得分:1)

在NSManagedObject中实现它:

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

答案 1 :(得分:1)

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

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

此外,prepareForDelete被称为先前,并将删除任何Cascade关系,并将任何Nullify标记为空。因此,那些必须“退出”。或者将您的数据模型更改为仅允许Deny允许将这些关系单独留在prepareForDelete中。这是对你的商业模式和逻辑采用僵硬的反手。

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

我认为最好的选择是取消激活Controller中canRemove方法绑定的删除按钮。

Some solid opinions Some possible solutions at SO