在Core Data for iOS中建模一对多关系

我有两个实体:患者和检查站.
患者具有DOB,姓名,ID等属性.
Checkpoint具有dateRecorded,height,weight等属性.

您可能会得到这样的想法 – 我希望有一组患者,然后每个患者都可以拥有与该患者相关的检查点.

在两个实体上,我应该如何设置设置?设置是:

为此我看了documentation,我仍然感到困惑.我认为我想要的是一对多关系(对于病人),但是我不知道如何为它们中的任何一个设置反转,或删除规则和其他东西.谢谢!!

解决方法

我本周刚刚开始使用Core Data.好问题!

关系:

由于一名患者可以有许多检查站,因此患者与检查站的关系是一对多关系. “反向关系”的概念基本上是这样的:你有一种关系(患者到检查点) – 现在继续从反向看,检查点的角度来看.检查点只适用于单个患者.因此,Checkpoint to Patient关系是一对一的关系.

反向关系:

要处理反向关系,只需创建每个关系,忽略反向关系.然后,在每个对象上建立关系后,继续将逆定义为另一个实体上的关系.

换句话说,关系指向另一个实体或一组实体.反向关系指向另一个实体的关系.

删除规则:

就删除规则而言,它非常简单.当试图删除有检查点的患者时……

>拒绝:核心数据不允许您删除患者.
>级联:核心数据将删除实体(患者),以及级联关系并删除这些对象. (换句话说,Core Data也会删除Checkpoint对象.)
> Nullify:核心数据将删除患者,但首先删除关系.检查站将保持不变.

对于Patient实体可能需要deny或cascade,具体取决于您希望如何管理数据.根据您的使用案例,您可能不希望无效,因为检查点依赖于患者实体.

你想要检查点的nullify,因为Cascade会阻止你删除检查点而不删除整个病人,而Deny会有效地强迫它.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...