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

时间:2018-03-06 11:08:20

标签: ios objective-c core-data ios9 unique-constraint

  

此问题在我们添加唯一键i.es约束后开始发生。

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

  

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

数据模型

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

(CDEvent, CDMeeting, CDMLCheckin) .

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

关系 enter image description here

属性: CDEvent enter image description here CDMeeting enter image description here

CDMLCheckin enter image description here

唯一约束:

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

关系

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

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

注意

  • 如果我从 CDEvent 中移除Unique Constraint eventUUID ,一切正常。

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

1 个答案:

答案 0 :(得分:2)

我希望我可以提供帮助,对To-Many关系实体有一个独特的约束,你需要记住一些要点

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

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

[_ context setMergePolicy:mergePolicy];

  • NSMergeByPropertyStoreTrumpMergePolicy

  • NSMergeByPropertyObjectTrumpMergePolicy

  • NSOverwriteMergePolicy

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