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

问题描述:

我有一个工作正常的核心数据应用程序。我现在试图将删除规则添加到几个关系中 实体1具有一组实体2核心数据 - 拒绝删除规则导致错误

如果实体1被删除并且它具有一些实体2对象,则拒绝删除,否则允许。 实体两者可以不用担心实体1

我有实体1组的关系,拒绝,和实体2的组以抵消

试图删除实体1 当我目前得到一个错误被删除[quote] Unresolved error Error Domain = NSCocoaErrorDomain Code = 1600“The operation could not be completed。(Cocoa error 1600.)”UserInfo = 0x1e882f40 {NSValidationErrorObject =(entity:Factory; id:0x1dda43e0 [/ quote]

我是否必须做点别的才能让它工作

拒绝规则不会按照您的预期工作。从Apple的文档:

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

不幸的是,拒绝规则并不妨碍删除,但会导致验证错误。所以你应该在删除之前手动检查关系是否为空。

+0

会很好,如果你给文档的URL – Shamsiddin 2016-02-16 08:14:28

+0

因此,拒绝删除规则应该被视为更多的安全网,不会让你删除你不想删除的数据? – 2017-04-20 05:42:48

  • 一个拒绝删除规则实际上是从实体1至实体2
  • 的关系,你已经删除了一个实体对象1
  • :当以下条件为真,则您将产生一个1600错误
  • 有一个相关的对象在Entity1.entity2
  • 您尝试保存上下文持久性存储

之前执行实体1 obj的缺失等你应该检查Entity1.entity2是否为空。如果不是的话,做的这些选项之一:

  • 跳过删除的实体1的对象,或者,
  • 无出Entity1.entity2对象,然后删除该实体1对象
+1

是否有另一种方法比使用1600作为幻数? – 2013-10-19 22:06:25

+0

发现它,NSValidationRelationshipDeniedDeleteError – 2013-10-19 22:09:33

我删除了detail对象后,发生了错误,该对象的nullify规则与它的关系为master。同时,masterdetails的关系有cascade规则。我将detail的规则从nullify更改为no action后,该错误消失。

它对我来说仍然很奇怪。无法理解错误的原因。