问题描述
|
我的核心数据应用程序中有两个实体。父对象是客户,子对象是具有已购买商品明细的订单。现在,我想在父视图控制器上显示的是\“ Sum of Items \”
客户名称:Leo
订单总额:£90
我是Core Data范式的新手,请多多包涵。您基于一个实体创建获取请求。我的父视图控制器的fetchResultController正在为客户获取结果。我如何同时可以获得客户订单总数?
谢谢
解决方法
首先,除非对象图主动实施这样的结构,否则您不应该考虑实体处于父子/树结构中。在大多数情况下,它不会,并且任何两个实体都是结构相等的。您的\'Customer \'和\'Order \'实体似乎就是这种情况。
这是一个重要的概念,因为与传统的树形结构不同,在Core Data数据图中,您可以在任何实体的任何实例处输入该图,并在任何方向上遍历这些关系,例如您不必总是获取
Customer
对象来启动,如果需要,您可以轻松获取Order
对象。
在这种情况下,您要获取“ 0”个对象,并且要查找所有关联的“ 1”个对象。您的数据模型应如下所示:
Customer{
name:string
orders<-->>Order.customer
}
Order{
item:string
cost:number
customer<<-(required)->Customer.orders
}
现在,每次创建新的“ 1”对象时,都会自动将其链接到适当的“客户”对象。当您获取任何特定的“ 0”对象时,所有与之相关的“ 1”对象在“ 8”关系中均可用。
如果要汇总所有客户订单的成本,可以使用类似这样的收款操作员:
NSNumber *orderSum=[Customer.order valueForKeyPath:@\"@sum.orders.cost\"];
关系对核心数据非常重要。