gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 04:40:21 25 4
gpt4 key购买 nike

我在掌握 CoreData 关系时遇到了一些麻烦,我记下了我应该在我的 2 个实体之间使用哪种关系类型,或者我的逻辑是否正确。

1) “人”实体——姓名、电话、地址、国家等属性...

2) "CountryList"- countryName、countryLat、countryLong 等属性。

CountryList 实体在应用首次运行时预先填充,以包括世界上所有国家及其相关数据。

我卡住的地方是我需要这两个实体之间的关系吗?

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

我是否只是将 CountryList 中的 countryName 作为字符串存储在 Person 中的 country 中?或者我可以在它们之间建立关系吗?

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

有人可以就此启发我并指出我应该在 xcode 中做什么的正确方向。

非常感谢马特

编辑:这是正确的吗?

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

Xcode Screenshot

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

Xcode Screenshot

最佳答案

首先,您的“CountryList”实体应称为“Country”,因为它只代表一个国家。事实上,你拥有许多这样的国家与它的名字无关。

这样一来,关系似乎就顺理成章了,一个“人”对应一个“国家”,但一个国家可以有很多人。因此,一对多的关系。使用关系将简化您可能想要执行的许多操作(即访问一个人的所有国家/地区信息,或获取在一个特定国家/地区的所有人的列表)。

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

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

参见 https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html了解更多信息。

关于iphone - CoreData 实体和属性之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9926380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com