代码之家  ›  专栏  ›  技术社区  ›  berfis

阻止删除核心数据NSManagedObject

  •  0
  • berfis  · 技术社区  · 13 年前

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

    我想在实体子类中这样做。可以在wakeFromInsert方法中设置变量。有没有一种方法可以防止删除,比如:

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

    我没有找到,但也许我错过了什么。

    2 回复  |  直到 10 年前
        1
  •  1
  •   mprivat    13 年前

    在您的NSManagedObject中实现此功能:

    - (BOOL)validateForDelete:(NSError **)error
    
        2
  •  1
  •   Community Mohan Dere    9 年前

    根据一些测试,我相信 validateForDelete 将无法根据需要阻止删除。

    删除验证 用于执行添加的验证 先前的 要删除。从本质上讲,方法名称具有误导性。就像例如

    此外 prepareForDelete 在之前调用,并将删除任何 Cascade 关系并标记为null any Nullify 一个。因此,这些必须“退出”或更改您的数据模型以仅允许 Deny 这将使这些关系处于准备删除状态。这就是对你的商业模式和逻辑进行严厉的反手打击。

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

    我认为最好的选择是取消激活绑定到 canRemove 方法。

    Some solid opinions Some possible solutions at SO