我正在开发一个数据收集应用程序,但我无法理解这些概念是如何连接的?这是我的计划: 网站< ----->>站< ------->>观察活动
网站有一个属性,一个网站的名称,并且可以包含多个工作站。每个站将随着时间的推移有多个观测值。我将这些设置为左侧的事件作为父事件,并创建了一对多的关系,如图所示,因为每个观察事件都需要用站点和站点标记。
我假设父实体是创建它的最佳方式,或者这是一种关系会做什么?我希望用户可以提前设置站点/站点数据,然后在制作时填写观察数据。
简而言之,我无法理解核心数据中的关系,以及父实体是多余的。核心数据文档对我来说并不清楚。任何帮助都会非常感激!!
答案 0 :(得分:1)
从本质上讲,当您生成实体类时,您将会看到的是,除了每个实体的属性之外,您还会为" to-many&#具有NSSet。 34;关系。您可以参考任何"记录"通过集合中的值在to-Many关系中。
起初看起来很复杂,但它总是有意义的。所以,如果你想看看电台,你可能会有一个"电台"设置包括该站点的每个站实体的托管对象列表。每个工作站将包含一个集合,其中包含每个相关观察的管理对象。
因此,一旦您拥有了Site实体,就可以使用以下内容查看该站点的所有站点:
Site *site = (Site *) managedObjectForSite;
for (NSManagedObject *station in site.stations)
{
Station *stat = (Station *) station;
(do what you need to with the station record)
}
你"链接"具有站点的站点通过将成员添加到给定站点记录的站点集合,其中每个成员是站点的管理对象。你被解除了阅读和#34;站记录 - 一旦你拥有了加载了站点的集合的成员,每个成员实际上都是相关站点的管理对象。
当灯亮起时,它会立刻变得清澈透明。你必须完成它,然后你才会知道那里发生了什么......
请同时查看此内容,因为它可能会有所帮助:One-to-Many Relationship: CoreData
答案 1 :(得分:0)
在Core Data中,关系在经典关系数据库设置中具有与外键类似的功能。
在数据库中,您将使用外键“连接”Site,Station和Event实体:
Site .id = Station .siteID
Station .id = Event .stationID
在核心数据中,这不是必需的。这两个实体都不需要额外的ID属性,而只需定义一对多关系。
Site <--->> Station <---->> Event
优势:您可以从站点或站点中的所有站点访问站点,使用透明且清晰易读的点符号,就像您对对象图表所期望的那样。您甚至可以通过事件对象等方便地获取网站。
Site *aStationsSite = station.site;
NSSet *aSitesStations = site.stations;
NSSet *aStationsEvents = station.events;
NSSet *sisterStations = station.site.stations;
Site *siteFromEvent = event.station.site;