【问题标题】:Prevent deleting a Core Data NSManagedObject防止删除核心数据 NSManagedObject
【发布时间】:2015-08-30 02:47:48
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: core-data nsmanagedobject


    【解决方案1】:

    在你的 NSManagedObject 中实现这个:

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

    【讨论】:

    • 是的,您的实施必须反映您的情况
    • 你的意思是:(BOOL)validateForDelete:(NSError **)error { return (self.testVariable != 0); } ??
    【解决方案2】:

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

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

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

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

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

    Some solid opinions Some possible solutions at SO

    【讨论】:

      猜你喜欢
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多