与CoreData的多对多关系

时间:2015-09-23 12:29:49

标签: core-data

Relation

喂,

我在图片中有数据模型。但我需要以下模型。

当我添加损坏报告Damage时,此报告应与数据存储区中存储的地址中的一个或多个Address对象相关联。

每个Address也应只添加一次到数据存储区。

我应该如何定义AddressDamage之间的关系?

的损坏: Damage

地址: Address

1 个答案:

答案 0 :(得分:1)

您可以将DamageAddress之间的关系设置为多对多。在模型编辑器中选择damage Address关系,然后将类型从To One切换为To Many。

"损坏"不是可数名词。对该实体名称的更好选择是DamageReportDamageIncident

至于为每个地址设置一个唯一的Address实体,您必须自己使用代码强制执行该实体。核心数据不能为您做到这一点。选择Address实体的哪些属性使其唯一:可能streetzipcode。然后编写一个接受街道,邮政编码和托管对象上下文的方法,并在核心数据中搜索与这些参数匹配的Address对象。该方法将返回现有对象(如果有),或者将创建一个新的对象,填充街道和邮政编码,并将其返回给您进行剩余的初始化。此模式通常称为"查找或创建",并记录在Apple的核心数据编程指南中。