2012-09-28 12 views
12

Natrafiłem na podobne pytania, ale żaden z nich nie miał pełnego przykładu, jak to zrobić.GROUP BY z SUM() przy użyciu Core Data

Kwerenda SQL Próbuję tłumaczyć to:

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

Potrzebuję pomocy debugowanie następujący kod jednoczęściowy (obecnie fetchRequest zwraca 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]; 

Jest to błąd:

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

czy możesz wydrukować NSLog (@ "error:% @", błąd); wyjście – CarlJ

+0

To nawet nie dostanie się do NSLog: 2012-09-28 13: 58: 46.319 Aplikacja [12205: c07] *** Kończenie aplikacji z powodu nieprzechwyconego wyjątku "NSInvalidArgumentException", powód: "*** - [__NSArrayM insertObject: atIndex:]: object nie może być nil ' –

+0

Więc jeśli wychwycę wyjątek, zawartość błędu jest zerowa –

Odpowiedz

7

powyższy kod musi

[ex setName:@"somename"]; 

przed wykonaniem polecenia fetchRequest.