2012-09-28 52 views
12

Me encontré con preguntas similares pero ninguna de ellas tenía un ejemplo completo de cómo lograrlo.GROUP BY con SUM() usando Core Data

La consulta SQL que estoy tratando de traducir es la siguiente:

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

Necesito ayuda para depurar el código siguiente pieza (actualmente el fetchRequest devuelve 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]; 

Este es el 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

puede por favor imprimir el NSLog (@ "error:% @", error); salida – CarlJ

+0

Ni siquiera llega al NSLog: 2012-09-28 13: 58: 46.319 Aplicación [12205: c07] *** Aplicación de terminación debido a la excepción no detectada 'NSInvalidArgumentException', razón: '*** - [__NSArrayM insertObject: atIndex:]: el objeto no puede ser nulo ' –

+0

Por lo tanto, si capturo la excepción, el contenido del error es nulo –

Respuesta

7

El código anterior debe

[ex setName:@"somename"]; 

antes de ejecutar fetchRequest.