显示父对象时对子对象求和 - 核心数据

时间:2011-05-26 20:27:51

标签: iphone ios4 core-data nsfetchedresultscontroller

我的核心数据应用程序中有两个实体。父是客户,子对象是订单,其中包含购买的详细项目。现在,我想在父视图控制器上显示的是“项目总和”,如下所示

客户名称:Leo 订单总额:£90

我是Core Data范例的新手,所以请耐心等待。您可以基于一个实体创建获取请求。我的父视图控制器的fetchResultController正在为Customer获取结果。我怎样才能同时获得客户订单总数?

由于

1 个答案:

答案 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"];

关系对核心数据非常重要。