核心数据(添加唯一约束后):注释:修复多对多关系的丢失删除传播

Iam*_*nil 9 core-data objective-c unique-constraint ios ios9

在我们添加Unique key i.es Constraint之后,这个问题就开始了.

经常更新会议管理对象会删除与会议管理对象具有一对一反比关系的事件管理对象.

错误CoreData:注释:修复对象0x60c00009c4d0(0x60c000621e40)上多对多关系meetingList的丢失删除传播,错误为0x60800009ac20(0x60800023a360)

数据模型

我的核心数据模型中有三个实体

(CDEvent, CDMeeting, CDMLCheckin) .
Run Code Online (Sandbox Code Playgroud)

实体属性和关系如下所述:

关系 在此输入图像描述

属性:CDEvent 在此输入图像描述 CDMeeting 在此输入图像描述

CDMLCheckin 在此输入图像描述

独特的约束:

  • CDEvent实体将eventUUID作为唯一约束.
  • CDMeeting实体将meetingUUID作为唯一约束.

关系

  • CDEvent < - >> CDMeeting
    • CDEventCDMeeting是与删除规则级联的多对多关系,从CDMeeting到CDEvent的反向关系是与删除规则无效的一对一.
  • CDEvent < - >> CDMLCheckin
    • CDEventCDMLCheckin与删除规则级联的多对多关系,从CDMLCheckin到CDEvent的反向关系是与删除规则无效的一对一.

完整说明:https://docs.google.com/document/d/1y2DQhBBLqjAP9eWbx5YpQhH7oVigxT_mcJDnPLlOMtQ/edit?usp=sharing

注意

  • 如果我删除唯一约束eventUUIDCDEvent一切工作正常.

请帮助我们,因为我们被打了一个多星期:(

Ion*_*lad 2

我希望我能提供帮助,对多关系实体有一个独特的约束,您需要记住一些要点

  • 使用每个 CoreData 关系的逆关系
  • 唯一约束属性永远不应该是可选的

创建 NSManagedObjectContext 时,请确保设置 MergePolicy。

[_context setMergePolicy: mergePolicy];

  • NSMergeByPropertyStoreTrumpMergePolicy

  • NSMergeByPropertyObjectTrumpMergePolicy

  • NSOverwriteMergePolicy

您还可以尝试将无效删除规则更改为无操作吗?