对核心数据结果集中的字段求和

时间:2011-09-05 18:57:15

标签: iphone objective-c

我试图在核心数据数组中求和一个字段。本质上,我有一个简单的核心数据对象,有两个属性,一个日期和一个数字。同一日期可能有多个记录。我正在寻找的最终输出是一组日期和值。日期表示来自核心数据结果的各个不同日期,值表示每个值的数字总和。在SQL中,我会执行以下操作:

SELECT eventDate,SUM(eventValue)FROM Events GROUP BY eventDate

但是,我不知道如何用核心数据实现类似的输出。有任何想法吗?下面是我到目前为止的代码 - 它获取了我所有的托管对象(类Event)。

// handle the fetch request
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:context];
[request setEntity:entity];

// error declaration prior to fetch
NSError * error;

// try to fetch
NSArray *fetchedEvents = [context executeFetchRequest:request error:&error];
NSArray *distinctDates = [arrayOfEvents valueForKeyPath:@"@distinctUnionOfObjects.eventDate"];
NSLog(@"%@", distinctDates);

不确定这是否是正确的开始。上面的distinctDates数组返回空而不是返回日期数组。

编辑:9/8 我已经能够找到一种方法来实现这一点,通过使用for循环将我的fetchedEvents数组加载到另一个自定义数组中,我按日期聚合我的计数并将结果存储在一个字典对象数组中。这有效,但我想知道是否有人对更好的方法提出了建议:

  • 加载我的整个数据子集
  • 根据某些分组(在本例中为日期)将我的数据聚合到一个对象数组中
  • 显示此

核心数据是否有类似“分组依据”的内容?

0 个答案:

没有答案