0

我有两个实体:

Patient
- firstName
- lastName
- scheduledAppointments <---->> Appointment

Appointment
- date
- times
- scheduledPatient <<----> Patient

基本上我有一个病人有很多约会。如何在 Appointments 实体中设置 schedulePatient?到目前为止,我已经尝试过:

[self.appointment setScheduledPatient:[self.patientArray objectAtIndex:indexPath.row]];

self.appointment.scheduledPatient = [self.patientArray objectAtIndex:indexPath.row];

他们在我编辑约会时工作。但是当我添加一个新约会时它会返回一个 SIGBRT。

4

1 回答 1

0

您的代码似乎是正确的。因此,我想您很可能没有在 .xcdatamodel 文件中正确定义反比关系。

据我了解,您有一对多的关系。也就是说,一个患者可能有多个约会。因此,预约属于一名患者。为了使这种关系在语义上是正确的,你需要让它知道它们是如何相互关联的。为此,您需要指定关系中每个元素的逆元素是什么。在下图中,您可以看到一个 Region 可能有多个状态,并且一个状态唯一属于一个 Region。注意连接关系元素的箭头,“many”有一个双箭头,“one”有一个单箭头。 在此处输入图像描述

我相信您很可能忘记在 xcdatamodel 文件中指定这一点。

查看此链接了解更多信息:https ://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html

反向关系
大多数关系本质上是双向的。如果一个部门与在一个部门工作的员工之间存在一对多关系,那么员工与部门之间存在反向关系。主要的例外是获取的属性,它表示弱的单向关系——从目标到源没有关系(请参阅“获取的属性”)。

您通常应该对两个方向的关系进行建模,并适当地指定反向关系。如果进行更改,Core Data 使用此信息来确保对象图的一致性(请参阅“操作关系和对象图完整性”)。有关您可能不想对双向关系建模的一些原因以及如果不这样做可能出现的一些问题的讨论,请参阅“单向关系”。
于 2013-03-09T09:52:19.327 回答