【问题标题】:Sum on child object while displaying parent object - Core Data显示父对象时对子对象求和 - 核心数据
【发布时间】:2011-05-26 20:27:51
【问题描述】:

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

客户名称:Leo 订单总额:90 英镑

我是 Core Data 范式的新手,所以请多多包涵。您基于一个实体创建获取请求。我的父视图控制器的 fetchResultController 正在为客户获取结果。我怎样才能同时获得客户订单总额?

谢谢

【问题讨论】:

标签: iphone ios4 core-data nsfetchedresultscontroller


【解决方案1】:

首先,您不应认为实体处于父子/树结构中,除非您的对象图主动强制实施这样的结构。在大多数情况下,它不会,并且任何两个实体在结构上都是平等的。您的“客户”和“订单”实体似乎就是这种情况。

这是一个需要掌握的重要概念,因为与传统的树形结构不同,在 Core Data 数据图中,您可以在任何实体的任何实例处输入图并沿任何方向走动关系,例如您不必总是获取Customer 对象来启动,如果需要,您可以轻松获取Order 对象。

在这种特殊情况下,您正在获取 Customer 对象,并且您希望找到所有关联的 Order 对象。您的数据模型应如下所示:

Customer{
  name:string
  orders<-->>Order.customer
}

Order{
  item:string
  cost:number
  customer<<-(required)->Customer.orders
}

现在,每次创建新的 Orderobject 时,都会自动将其链接到适当的 Customer 对象。当您获取任何特定的Customer 对象时,所有与它相关的Order 对象都在Customer.orders 关系中可用。

如果您想汇总客户所有订单的成本,您可以使用这样的收款运算符:

NSNumber *orderSum=[Customer.order valueForKeyPath:@"@sum.orders.cost"];

关系对于 Core Data 来说非常重要。

【讨论】:

  • 感谢您的回答。今晚我会在家里试一试。
猜你喜欢
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-01
  • 2011-07-24
  • 1970-01-01
相关资源
最近更新 更多