Iphone 对核心数据对象进行分组

Iphone 对核心数据对象进行分组,iphone,objective-c,cocoa,core-data,Iphone,Objective C,Cocoa,Core Data,我有一个核心数据实体,它有一个created_at属性,它是NSDate,还有一个amount属性,它是NSInteger 我想提出一个请求,返回按月份分组的金额总和。比如: [['February 2010', 450], ['January 2010', 300]] 如果我必须首先获取特定日期范围内的所有结果,然后计算总和,或者如果有其他方法,我不确定如何实现这一点 另外,我是在iphone 4.2 sdk上进行此操作的。我会将您感兴趣的对象范围提取到一个数组中,然后通过该数组进行枚举,并

我有一个核心数据实体,它有一个created_at属性,它是NSDate,还有一个amount属性,它是NSInteger

我想提出一个请求,返回按月份分组的金额总和。比如:

[['February 2010', 450], ['January 2010', 300]]
如果我必须首先获取特定日期范围内的所有结果,然后计算总和,或者如果有其他方法,我不确定如何实现这一点


另外,我是在iphone 4.2 sdk上进行此操作的。

我会将您感兴趣的对象范围提取到一个数组中,然后通过该数组进行枚举,并在移动中添加所有数量


我不确定是否也可以通过创建复杂的请求来解决这个问题,但我的直觉告诉我,无论如何设置起来都会很棘手(如果可能的话).

即使已经接受了答案,也让我添加这个更复杂、更快速的完整性方法

假设没有在数据模型中对月份进行建模,则需要在每个月提取对象,然后对金额求和。根据需要重复几个月

因此,第一步是为fetch创建一个变量谓词。大概是这样的:


NSPredicate*exPred=[NSPredicate谓词格式:@"%@谢谢。我正在获取第一个日期并迭代到当前日期。我确信您知道您的代码完全不正确,无法编译。此外,您的
NSPredicate
将不会解析并引发异常。谢谢,我将尝试您的方法。我最终使用了您的方法来计算总和,同时仍在计算按照已接受答案中的建议手动输入第一个和最后一个日期。您好,您从哪里获得的
monthStartDate
monthEndDate
?我在这里遇到了相同的问题,但仍然不清楚。谢谢!可能是重复的
NSPredicate *exPred=[NSPredicate predicateWithFormat:@"(%@<=created_at) AND (created_at<=%@)", monthStartDate,monthEndDate];
NSArray *fetchedObjects=[context executeFetchRequest:theFetch error:&error];
    // if no error
    NSNumber *theSum=[fetchedObjects valueForKeyPath:@"@sum.amount"];