encuentro este método (más o menos similar a la respuesta aceptada) para ser un poco más limpio y más fácil comprender. Este es el SQL equivalente a:
SELECT COUNT(*), a_value FROM my_table GROUP BY a_value;
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:[MyTable className]];
// create expression for grouped column
NSExpressionDescription *aValueDescription = [[NSExpressionDescription alloc] init];
aValueDescription.name = @"aValue"; // name of key in result dictionary
aValueDescription.expression = [NSExpression expressionWithFormat:@"aValue"];
aValueDescription.expressionResultType = NSObjectIDAttributeType;
// create expression for count
NSExpressionDescription *countDescription = [[NSExpressionDescription alloc] init];
countDescription.name = @"count"; // name of dictionary key in result dictionary
countDescription.expression = [NSExpression expressionWithFormat:@"[email protected]"];
countDescription.expressionResultType = NSInteger32AttributeType;
// fill out fetch request
fetchRequest.propertiesToGroupBy = @[@"aValue"];
fetchRequest.propertiesToFetch = @[aValueDescription, countDescription];
//fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"count" ascending:NO]]; // not sure why this crashes
fetchRequest.resultType = NSDictionaryResultType; // required for "group by" requests
NSError *error = nil;
NSArray *results = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
El regresaron results
es una matriz de NSDictionary. Tenga en cuenta que las propiedades de la descripción name
pueden ser lo que usted desee, solo son los nombres de las claves en los diccionarios devueltos. Se puede agregar un predicado a la solicitud de búsqueda para filtrar las filas de la tabla; este código devuelve todas las filas.
puntos de bonificación a cualquier persona que me puede decir cómo hacer el trabajo descriptor de tipo ...
Por favor, háganos saber si una respuesta que ayudó a salir. –