2012-09-28 6 views
12

비슷한 질문이 생겼지 만 그 중 어떤 것도 달성 방법에 대한 완전한 예가 없었습니다.GROUP BY with SUM() with Core Data

내가 번역하려고 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' 
+0

NSLog (@ "오류 : % @"오류)를 인쇄 할 수 있습니까? 출력 – CarlJ

+0

심지어 NSLog에 도착하지 않습니다. 2012-09-28 13 : 58 : 46.319 App [12205 : c07] *** 캐치되지 않은 예외 'NSInvalidArgumentException'으로 인해 앱 종료 중, 이유 : '*** - [__NSArrayM insertObject : atIndex :] : 객체가 'Nothing이 될 수 없습니다.' –

+0

예외를 catch하면 오류 내용이 null이됩니다. –

답변

7

위의 코드는

필요
[ex setName:@"somename"]; 

fetchRequest를 실행하기 전에