反向关系警告 - 询问使用反向关系的实践

时间:2010-02-04 15:10:04

标签: iphone core-data

我有Order表,其中包含有关特定订单的信息,(何时开始,有多少人等等)以及Order表与Menu Item表的To-Many关系。我将这种关系称为“orderItems”。

编译器给我警告,“Order.orderedItems - to-many关系没有反转:这是一个高级设置(没有对象可以在特定关系的多个目的地)”

你通常如何做反向关系?我是否需要在菜单项上创建一个新关系以指向Order,并将反向关系设置为“orderedItems”? (事实上​​,我没有理由将这些数据保存在菜单项表中)

有人可以向我解释为什么,或者至少指出我为什么需要在菜单项表上创建反向关系的原因。

提前致谢,

2 个答案:

答案 0 :(得分:18)

我也遇到了这个警告和问题!这是你需要知道的......

假设你有两张桌子 - 汽车和司机。您定义了一对一的关系 - 一辆车与一辆车,但没有倒车。

现在,如果您创建一个汽车并为其分配驱动程序,如果您稍后删除该驱动程序,然后尝试访问car.driver,您的程序将崩溃。 Car.driver不会是零 - 它会使你的程序崩溃。

所以,如果你没有创建反转,你就不能检查是否有东西是零,如果驱动程序被删除,你甚至无法安全地使用car.driver。

我不喜欢XCode如何设置。它应该默认为反转并且是改变它的痛苦。

设置反转很简单。只需在XCode中打开xcdatamodel,单击现有关系,然后选中相反的框。

答案 1 :(得分:4)

通常,您应该始终添加反向关系。

不要根据将要生成的表来考虑Core Data。实际上,Core Data非常聪明,不会将数据放在多个表中。

专注于设计满足您需求的数据模型(并添加反向关系)。