喂,
我在图片中有数据模型。但我需要以下模型。
当我添加损坏报告Damage
时,此报告应与数据存储区中存储的地址中的一个或多个Address
对象相关联。
每个Address
也应只添加一次到数据存储区。
我应该如何定义Address
和Damage
之间的关系?
答案 0 :(得分:1)
您可以将Damage
和Address
之间的关系设置为多对多。在模型编辑器中选择damage
Address
关系,然后将类型从To One切换为To Many。
"损坏"不是可数名词。对该实体名称的更好选择是DamageReport
或DamageIncident
。
至于为每个地址设置一个唯一的Address
实体,您必须自己使用代码强制执行该实体。核心数据不能为您做到这一点。选择Address
实体的哪些属性使其唯一:可能street
和zipcode
。然后编写一个接受街道,邮政编码和托管对象上下文的方法,并在核心数据中搜索与这些参数匹配的Address
对象。该方法将返回现有对象(如果有),或者将创建一个新的对象,填充街道和邮政编码,并将其返回给您进行剩余的初始化。此模式通常称为"查找或创建",并记录在Apple的核心数据编程指南中。