核心数据 - 拒绝导致错误的删除规则

时间:2012-08-16 15:27:03

标签: xcode ios5

我有一个运行良好的核心数据应用程序。我现在正试图将删除规则添加到几个关系中 实体1具有一组实体2

如果实体1被删除且它有一些实体2对象,则拒绝删除,否则允许。 可以删除实体二而无需担心实体1

我将实体1上的关系设置为Deny,将实体2设置为nullify

我在尝试删除实体1时遇到错误 [quote]未解决的错误Error Domain = NSCocoaErrorDomain Code = 1600“操作无法完成。(Cocoa error 1600.)”UserInfo = 0x1e882f40 {NSValidationErrorObject =(entity:Factory; id:0x1dda43e0 [/ quote]

我是否必须采取其他措施才能使其正常运作

3 个答案:

答案 0 :(得分:7)

拒绝规则无法正常运作。来自Apple的文档:

  

如果规则是Deny,那么在删除对象之前,必须从关系中删除目标对象,否则在保存时会出现验证错误。

不幸的是,拒绝规则不会阻止删除,但会导致验证错误。因此,您应该在删除之前手动检查关系是否为空。

答案 1 :(得分:2)

如果满足以下条件,您将生成1600错误:

  • 拒绝删除规则在从实体1到实体2的关系中生效
  • 您已删除实体1对象
  • Entity1.entity2
  • 中有一个相关对象
  • 您尝试将持久存储保存到上下文

在执行Entity 1对象的删除之前,应检查Entity1.entity2是否为null。如果不是,请执行以下任一选项:

  • 跳过删除实体1对象,或
  • 取出Entity1.entity2对象,然后删除实体1对象

答案 2 :(得分:0)

在我删除了detail对象nullify之后,我发生了错误,master对与master的关系进行了cascade规则。同时,detailsdetail的关系有nullify规则。我将no action的规则从{{1}}更改为{{1}}后,错误消失了。

我看起来仍然很奇怪。无法理解错误的原因。