您可以通过使用NSExpressionDescription
为通过分组随着NSFetchRequest你可以看到this tutorial做这做这个stackOverFlow question
对于这里的总和NSExpressionDescription
添加到您的NSFetchRequest
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
expressionDescription.name = @"sumOfAmounts";
expressionDescription.expression = [NSExpression expressionForKeyPath:@"@sum.total"];
expressionDescription.expressionResultType = NSDecimalAttributeType;
对于我认为您可以在获取记录时使用NSDateFormatter
进行格式化的日期。
让我知道这是有帮助:)
UPDATE
[fetch setPropertiesToFetch:[NSArray arrayWithObjects:statusDesc, expressionDescription, nil]];
[fetch setPropertiesToGroupBy:[NSArray arrayWithObject:statusDesc]];
[fetch setResultType:NSDictionaryResultType];
NSError* error = nil;
NSArray *results = [myManagedObjectContext executeFetchRequest:fetch
error:&error];
不,CoreData不具有的strftime或DATEPART相等。而它的groupby只适用于持久性属性,而不是计算表达式。如果您想通过fetchRequest实现此目的,则必须为计算的月份/年添加持久属性,并确保它与日期保持同步。 – pbasdf
这就是我所害怕的。我知道核心数据不是一个ORM,但我有点失望。谢谢 – Hugo