加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iphone – CoreData实体和属性之间的关系

发布时间:2020-12-14 17:53:30 所属栏目:百科 来源:网络整理
导读:我在掌握CoreData关系方面遇到了一些麻烦,我注意到我应该在我的2个实体之间使用哪种关系类型,或者我的逻辑是否正确. 1)“人”实体 – 名称,电话,地址,国家等属性…… 2)“CountryList” – countryName,countryLat,countryLong等属性. CountryList实体在首次
我在掌握CoreData关系方面遇到了一些麻烦,我注意到我应该在我的2个实体之间使用哪种关系类型,或者我的逻辑是否正确.

1)“人”实体 – 名称,电话,地址,国家等属性……

2)“CountryList” – countryName,countryLat,countryLong等属性.

CountryList实体在首次运行应用程序时预先填充,以包括世界上所有国家/地区及其受尊重的数据.

我被困的地方是否需要这两个实体之间的关系?

我将允许用户从CountryList实体数据中选择一个国家,并希望在Person实体的country属性中存储选择.

我是否只将CountryList中的countryName作为字符串并将其存储在Person的国家/地区?还是我可以在他们之间建立关系?

我知道一个用户只能属于一个国家,但一个国家可以有很多用户,所以这是一对多的关系吗?或者它是多对多,因为许多用户可以属于一个国家,但一个国家可以拥有大量用户?困惑!

有人可以请教我这个,并指出我在xcode中应该做的正确的方向.

提前谢谢了
马特

编辑:这是对的吗?

我已对实体名称等进行了更改,并认为我现在已正确设置关系.

编辑2:删除了国家/地区属性并重命名了关系

解决方法

首先,您的“CountryList”实体应称为“Country”,因为它只代表一个国家/地区.您拥有许多这些国家的事实与其名称无关.

在那之后,使用关系似乎很自然,一个“人”有一个“国家”,但一个国家可以有很多人.因此,一对多的关系.使用关系将简化您可能想要执行的许多操作(即访问一个人的所有国家/地区信息,或获取一个特定国家/地区的所有人员的列表).

哦,这可能会帮助你更好地理解关系:CoreData本身没有“多对多”的关系.您始终定义从源到目标的关系.因此,如果您定义从Country到Person的关系,这将是一对多的关系.一个国家,很多人.然后,您可以定义从人到国家的关系,这将是一对一的关系.一个人,一个国家.如果您将此定义为一对多关系,您最终会得到事实上的多对多关系(因为人们可以拥有多个国家,一个国家可以拥有多个人).它并不像看起来那么复杂.

现在,在定义了两个关系之后,您可以将它们设置为彼此“反向关系”.对其中一个关系执行此操作,另一个将自动设置.执行此操作后,CoreData将在您将此人添加到国家/地区列表时更新Person的国家/地区.

有关详细信息,请参见https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读