使用核心数据关系计算摘要

时间:2012-01-14 16:20:02

标签: objective-c ios math core-data

在我的对象图中,我有一个经典的父/子关系中的两个实体。每个孩子都有很多属性,但我感兴趣的是一个时间值(存储为NSDate)。

所以我的父对象有一个“Summary”属性,它应该是它的组合子节点时间值的计算总和。简单地说:每个孩子都会存储一段时间,我希望家长显示所有孩子的总计。

我对CoreData有一定的经验,我可以很容易地想到实现这一点的几种方法(例如,在枚举子实体的父级上定义一个瞬态属性并添加总计很容易一个ivar) - 但我想知道CoreData是否有一个固有的,更优雅的解决方案......

1 个答案:

答案 0 :(得分:3)

有两种方法可以解决这个问题:
首先 - 将数据提供给NSSet或NSArray并使用@sum运算符:

//assume that `childs` are NSArray of your child entities and ammount is attribute to sum
NSNumber *sum=[childs valueForKeyPath:"@sum.ammount"];

第二个是使用特定的提取for specific value并添加了NSExpressionDescription和一个总和。对于较大的db来说,这种方式更难但更好