我试图在核心数据数组中求和一个字段。本质上,我有一个简单的核心数据对象,有两个属性,一个日期和一个数字。同一日期可能有多个记录。我正在寻找的最终输出是一组日期和值。日期表示来自核心数据结果的各个不同日期,值表示每个值的数字总和。在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数组加载到另一个自定义数组中,我按日期聚合我的计数并将结果存储在一个字典对象数组中。这有效,但我想知道是否有人对更好的方法提出了建议:
核心数据是否有类似“分组依据”的内容?