核心数据关系

时间:2014-03-31 07:41:17

标签: ios iphone objective-c core-data

搜索了很多,但无法提供更好的解决方案,我是CoreData的新手,  我有一张桌子清单,每张桌子都有一些人坐在上面。我必须保存人的名字和他们的着装颜色,如果任何人有白色的着装颜色我必须保存他的更多信息,如父亲的名字,地址等我想用CoreData做但是找不到解决方案。请建议一个解决方案或教程。 实际上每张桌子都会有人坐在上面,所以它会是一对多的关系,而有些桌子我没有穿白色衣服的人,而有些桌子上有一两个人坐着白色连衣裙,而其他人没有白色连衣裙,我很困惑,如何只为白人穿着的人保存价值,然后将它与椅子和桌子相关联,

1 个答案:

答案 0 :(得分:0)

模特不应该关心着装颜色。只需创建一个人体实体,它可以保存着装颜色并具有您需要的所有其他属性。将所有仅为白色人员保存的值标记为核心数据检查器中的可选值。

enter image description here

如果您创建的人没有白色连衣裙,请不要填写其他值。

您无法在数据模型中指定“如果穿着白色连衣裙”。那部分进入实现,你的实际代码。如果一个人穿着白色填写信息,如果没有,则不要收集该信息。

如果您邀请整个世界参与您的活动,您可以考虑添加两个不同的实体PersonWithOutWhiteDressPersonWithWhiteDress,但在您看到实际的性能问题之前,我会坚持使用单个实体Person 。如果不必要,请不要过度复杂化数据模型。

关于实体之间的关系:保存多少关系并不重要。阅读to-many和to-one作为可以保存的限制。
如果你有一对一的关系,它可以容纳0或1个对象。如果你有一个多对多关系,它可以容纳0,1或许多对象。 (我忽略了您可以在数据模型中指定的最小和最大关系限制)

如果应该可以与多个对象建立关系,则需要创建多对多关系。即使你只是保存一个关系。在我提议的数据模型中,如果您有一个空表persons将包含0 Person个实例。但这种关系仍然很多。