2012-01-14 62 views
1

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

因此,我的父对象有一个“摘要”属性,它应该是计算出的它的组合子项的时间值的总和。简单地说:每个孩子存储一定的时间,我希望父母显示所有孩子的总和。

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

+0

时间是否意味着持续时间?如果是这样,你可以将时间存储为'float'或'double'并使用'@ sum'运算符。 – Costique 2012-01-14 16:43:40

+0

是的,持续时间。谢谢! – isaac 2012-01-14 17:03:37

回答

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。这种方式更难但更好的更大的分贝

+0

太棒了。正是我在找的东西,知道它在那里... – isaac 2012-01-14 17:04:27

+0

你也许能够帮助这个类似的问题:http://stackoverflow.com/questions/8862341/how-to-sum-on-a计算属性,听起来像你有它的知识。 – jrturton 2012-01-14 18:34:15