2

我有一个关于我想与 CoreData 一起使用的相当高级的 DataModel 的问题。

在详细介绍我到目前为止所做的事情之前,我将描述我想要做的事情。

我有一份入住一个房间并有偏好的酒店客人名单。一旦准备就绪,用户应该选择一个客人并查看数据,还应该能够添加新客人,选择房间(也由应用程序维护)并选择他们的偏好(用户还可以添加新的偏好)。客人可以没有或有很多偏好。

这就是我到目前为止所拥有的。我创建了 3 个实体: - 带有房间号的房间 - 带有名称的首选项 - 带有名称的 GuestInfo -> 带有这些关系房间(目标房间)和首选项(具有“多对关系”的目标偏好)

现在,我完成了所有这些并创建了托管对象类。到现在为止还挺好。问题是我收到了一些警告。

  1. GuestInfo.room -- 关系没有逆关系
  2. GuestInfo.prefs -- 多对多关系没有反向关系:这是一个高级设置(对于特定关系,没有对象可以位于多个目标中)

这只是我可以忽略的警告吗?我的意思是对于房间,每个客人总是只有一个房间号,但是一个房间可以有更多的客人,所以不能在这里放置任何反比关系。同样对于偏好,每位客人可以没有或更多偏好。

4

2 回答 2

4

在 Objective-C 中,警告永远不应该被忽略。在处理 Core Data 时,这是双重事实。在运行时将每个警告视为错误。

至于逆关系,你应该总是有逆关系。如果您不这样做,那么性能将受到影响,并且数据完整性处于高风险之中。

于 2010-06-04T17:36:54.250 回答
1

这些警告可以忽略(参见这个问题),但很容易添加反向关系以使 Core Data 满意。将 Room 的关系添加到 GuestInfo,将 Preference 的关系添加到 GuestInfo,并确保选择相反的关系。我认为这些是一对一的,因为每个房间只有一个客人信息。这可能会产生副作用,当您在客人信息上设置房间时,该房间的任何其他客人信息都将被删除。如果这是不可取的,您可以使关系成为多对一。

于 2010-06-03T16:35:33.190 回答