从每个结果中获取To-Many NSSets并计算总和

时间:2013-03-26 16:44:52

标签: iphone ios core-data one-to-many

我有以下核心数据模型:

Data Model

我根据用户选择获取PbsRow的实体(用户可以选择以jahr(年份)和monat(月份)保存的时间范围)。获取请求后,我有一个带有几个PbsRow实例的NSArray。我想要做的是计算属于每个PbsRow实体的所有WarengruppeVK实体(例如netto)的总和。我试过通过valueForKeyPath做这个,但这对我来说似乎不起作用: - (。

非常感谢任何帮助。 提前谢谢!

3 个答案:

答案 0 :(得分:0)

所以,如果我理解正确,你想要所有现有的WarengruppeVK-s?在这种情况下,只需制作NSFetchRequest,将实体设置为WarengruppeVK并保留谓词nil

希望这有帮助!

修改

在这种情况下,您可以使用for来浏览获取的数据,并且每个实体都应该有一个名为NSSet的{​​{1}}属性,其中包含所有它的WarengruppeVK。

答案 1 :(得分:0)

您可以随意将托管对象子类视为您控制下的子类。教他们新的技巧,比如回答这一年。

// PbsRow.h
- (NSInteger)year;

// PbsRow.m
- (NSInteger)year {
   // return some function of self.jahr that you can write
}

然后......

NSInteger warrenGroupeCount = 0;
for (PbsRow *pbsRow in fetchResults) {
    if ([pbsRow year] == 2012)
        warrenGroupeCount += pbsRow.warengruppeVK.count;
}

答案 2 :(得分:0)

第一步:使用包含此谓词的获取请求获取您的WarengruppeVK。

[NSPredicate predicateWithFormat:@"pbsrow IN %@", pbsRowArray]; 

第二步:使用密钥路径机制的值。

[warengruppeVKArray valueForKeyPath:@"@sum.netto"];