核心数据模型关系是否基于图像正确?

时间:2014-01-25 16:37:29

标签: ios sql objective-c core-data ios7

Order可以包含与该订单相关联的许多OrderLines项目。

当用户想要在我的应用中看到Order history view controller时,我希望能够选择所有订单及其关联的订单。

我有这个设置atm,这是正确的吗?请注意正确的信息窗格,以便您可以查看该关系属性的设置。

enter image description here

问题1。 我的关系是否正确,我能够在选择订单时检索所有订单,或者我是否需要执行两个查询,一个检索所有orders,另一个检索所有orderLines然后合并它们基于orderLinesorder相关联的OrderLine。这就是我在后端的SQL设置中所做的事情,但我希望核心数据可以更好地抓住行。

问题2。除了更新Orders orderTotalAmount {{1}之外,用户应该能够删除任何影响Order's实体的property. But my question being, I dont want an to be deleted when I delete a specific }订单. For that would I need to set the delete rule to orderLine order没有行动?

问题3。如果我希望我的关系合适,那么1 OrderLines可以有很多{{1}}与之关联吗?

1 个答案:

答案 0 :(得分:3)

根据Apple的建议,你也应该建立反向关系。

OrederLines的订单是to-many和OrderLines到Orders你已经正确设置 - 但它不应该是可选的。 对于订单,您还应该有删除规则:级联 - 所以如果您删除订单,它将删除所有相关的OrderLines

  1. CoreData将为您做到这一点 - 它还会在惰性模式下执行此操作 - 只有当您访问它们将被加载的关系对象时。你可以改变它并预加载所有,但只有当你真的需要它时才会这样。

  2. 您应该为此保留nullify操作 - 它会在删除时正确更新订单并断开相关对象。

  3. 在开始时回答 - 你应该也有从Orders到OrderLines的反向关系。这也将为您生成用于自动创建关系的方法。

    - (void) addOrderLinesObject:(OrderLines*)value;
    - (void) removeOrderLinesObject:(OrderLines*)value;
    
  4. 正确设置后,您还可以使用Order类:

       @property (nonatomic, retain) NSSet* orderLines;
    

    通过它,您可以访问相关对象。