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

Posted

技术标签:

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

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

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

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

谢谢

【问题讨论】:

可能重复***.com/questions/5145738/… 【参考方案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 来说非常重要。

【讨论】:

感谢您的回答。今晚我会在家里试一试。

以上是关于显示父对象时对子对象求和 - 核心数据的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:按核心数据属性分组和求和

您可以对子表单中的计算字段求和吗?

在 Swift 中过滤对象数组并求和它们的属性

wps 求和怎么会出现value?

stream流运算:求和(基本数据类型,BigDecimal),多字段乘积求和,提取对象属性集合

当对象可能为 Nil 时求和