【问题标题】:GROUP BY with SUM() using Core DataGROUP BY 与 SUM() 使用 Core Data
【发布时间】:2012-09-20 04:43:44
【问题描述】:

我遇到了类似的问题,但没有一个提供完整的示例来说明如何完成。

我要翻译的 SQL 查询是这样的:

SELECT date, SUM(amount) FROM Table GROUP BY date;

我需要帮助调试以下代码(当前 fetchRequest 返回 nil):

entity = [NSEntityDescription entityForName:@"Table" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

NSExpressionDescription* ex = [[NSExpressionDescription alloc] init];
[ex setExpression:[NSExpression expressionWithFormat:@"@sum.amount"]];
[ex setExpressionResultType:NSDecimalAttributeType];

[fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:@"date", ex, nil]];
[fetchRequest setPropertiesToGroupBy:[NSArray arrayWithObject:@"date"]];
[fetchRequest setResultType:NSDictionaryResultType ];

[self.managedObjectContext executeFetchRequest:fetchRequest error:&error];

这是错误:

2012-09-28 13:58:46.319 App[12205:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

【问题讨论】:

  • 能否打印 NSLog(@"error: %@", error);输出
  • 它甚至没有进入 NSLog:2012-09-28 13:58:46.319 App[12205:c07] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:' *** -[__NSArrayM insertObject:atIndex:]: 对象不能为 nil'
  • 所以如果我捕捉到异常,error的内容就是null
  • 所以请先修复“object cannot be nil”异常。

标签: objective-c ios core-data group-by


【解决方案1】:

上面的代码需要

[ex setName:@"somename"];

在执行 fetchRequest 之前。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 2013-04-30
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多