Order
可以包含与该订单相关联的许多OrderLines
项目。
当用户想要在我的应用中看到Order history view controller
时,我希望能够选择所有订单及其关联的订单。
我有这个设置atm,这是正确的吗?请注意正确的信息窗格,以便您可以查看该关系属性的设置。
问题1。
我的关系是否正确,我能够在选择订单时检索所有订单,或者我是否需要执行两个查询,一个检索所有orders
,另一个检索所有orderLines
然后合并它们基于orderLines
与order
相关联的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}}与之关联吗?
答案 0 :(得分:3)
根据Apple的建议,你也应该建立反向关系。
OrederLines的订单是to-many和OrderLines到Orders你已经正确设置 - 但它不应该是可选的。 对于订单,您还应该有删除规则:级联 - 所以如果您删除订单,它将删除所有相关的OrderLines
CoreData将为您做到这一点 - 它还会在惰性模式下执行此操作 - 只有当您访问它们将被加载的关系对象时。你可以改变它并预加载所有,但只有当你真的需要它时才会这样。
您应该为此保留nullify操作 - 它会在删除时正确更新订单并断开相关对象。
在开始时回答 - 你应该也有从Orders到OrderLines的反向关系。这也将为您生成用于自动创建关系的方法。
- (void) addOrderLinesObject:(OrderLines*)value;
- (void) removeOrderLinesObject:(OrderLines*)value;
正确设置后,您还可以使用Order类:
@property (nonatomic, retain) NSSet* orderLines;
通过它,您可以访问相关对象。