显示父对象时对子对象求和 - 核心数据
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
现在,每次创建新的 Order
object 时,都会自动将其链接到适当的 Customer 对象。当您获取任何特定的Customer
对象时,所有与它相关的Order
对象都在Customer.orders
关系中可用。
如果您想汇总客户所有订单的成本,您可以使用这样的收款运算符:
NSNumber *orderSum=[Customer.order valueForKeyPath:@"@sum.orders.cost"];
关系对于 Core Data 来说非常重要。
【讨论】:
感谢您的回答。今晚我会在家里试一试。以上是关于显示父对象时对子对象求和 - 核心数据的主要内容,如果未能解决你的问题,请参考以下文章