我的核心数据应用程序中有两个实体。父是客户,子对象是订单,其中包含购买的详细项目。现在,我想在父视图控制器上显示的是“项目总和”,如下所示
客户名称:Leo 订单总额:£90
我是Core Data范例的新手,所以请耐心等待。您可以基于一个实体创建获取请求。我的父视图控制器的fetchResultController正在为Customer获取结果。我怎样才能同时获得客户订单总数?
由于
答案 0 :(得分:1)
首先,您不应该将实体视为父子/树结构,除非您的对象图主动强制执行此类结构。在大多数情况下,它不会和任何两个实体结构相等。您的“客户”和“订单”实体似乎就是这种情况。
这是一个需要掌握的重要概念,因为与传统的树形结构不同,在核心数据数据图中,您可以在任何实体的任何实例中输入图形,并在任何方向上走这些关系,例如:您不必始终提取Customer
对象即可启动,如果需要,您可以轻松获取Order
对象。
在这种特殊情况下,您将获取Customer
个对象,并且您希望找到所有关联的Order
个对象。您的数据模型应如下所示:
Customer{
name:string
orders<-->>Order.customer
}
Order{
item:string
cost:number
customer<<-(required)->Customer.orders
}
现在,每次创建新的Order
对象时,都会自动将其链接到适当的Customer对象。当您获取任何特定Customer
对象时,Order
关系中的所有相关Customer.orders
对象都可用。
如果您想总结所有客户订单的成本,您可以使用如下收集运算符:
NSNumber *orderSum=[Customer.order valueForKeyPath:@"@sum.orders.cost"];
关系对核心数据非常重要。