Cocoa 使用CoreData的Xcode中的高级数据模型

Cocoa 使用CoreData的Xcode中的高级数据模型,cocoa,xcode,core-data,datamodel,Cocoa,Xcode,Core Data,Datamodel,我有一个关于我想与CoreData一起使用的相当高级的数据模型的问题 在我详细介绍到目前为止我所做的事情之前,我将描述我想做的事情 我有一份住在一个房间并有偏好的酒店客人名单。准备好后,用户应选择一位客人并查看数据,还应能够添加新客人、选择房间(也由应用程序维护)并选择他们的首选项(用户还可以添加新的首选项)。客人可以没有或有很多偏好 这就是我到目前为止的情况。我创建了3个实体: -有roomnumber的房间 -带有名称的首选项 -名称为->的GuestInfo与这些关系room(目标房间)和

我有一个关于我想与CoreData一起使用的相当高级的数据模型的问题

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

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

这就是我到目前为止的情况。我创建了3个实体: -有roomnumber的房间 -带有名称的首选项 -名称为->的GuestInfo与这些关系room(目标房间)和prefs(目标首选项与“多个关系”)

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

  • GuestInfo.room--关系没有倒数
  • GuestInfo.prefs——对多关系没有反向:这是一个高级设置(对于特定关系,任何对象都不能位于多个目标中)

  • 这只是一个我可以忽略的警告吗?我的意思是,对于房间来说,每个客人总是只有一个房间号,但是一个房间里可能会有更多的客人,所以不能把任何相反的关系放在这里。此外,对于首选项,每个来宾可以没有或更多首选项。

    这些警告可以忽略(请参见此),但只需添加反向关系即可使核心数据满意。将一个关系添加到Room to GuestInfo,将一个关系添加到Preference to GuestInfo,并确保选择了相反的关系。我假设这是一对一的,因为每个房间只有一个客人信息。这可能会产生一个副作用,即当您根据客人信息设置房间时,该房间的任何其他客人信息都将被删除。如果这是不可取的,您可以将关系设置为多对一。

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


    至于反向关系,你应该总是有反向关系。如果您不这样做,性能将受到影响,数据完整性将面临高风险。

    希望看到您的模型的屏幕截图吗?看到图表会使这更容易理解。这是一个糟糕的建议。这些警告,尤其是反向关系警告,永远不应该被忽视。我不打算建议他忽略它们(那将是一个可怕的建议)。然而,重读我的答案,我可以看到我看到它听起来像我说的那样。“can”的意思是,“如果你需要钱,你可以抢劫银行,但是……”语气有时会在文本中消失。