Getting NSFetchedResultsController, NSSortDescription y sectionNameForKeyPath para trabajar juntos

Actualmente estoy trabajando en una aplicación que tiene un par de entidades y relaciones como se ilustra a continuación:

Í <<-->Categorí.

Actualmente estoy buscandoÍ instancias y mostrarlas en secciones usando el elementocategory.name. En este caso, puedo usar un descriptor de clasificación para ordenar las categorías por nombre, que es bastante sencillo y funciona bien (código relevante a continuación):

-(NSFetchedResultsController*)fetchedResultsController {
    if (fetchedResultsController_ != nil)
        return fetchedResultsController_;
    NSManagedObjectContext *moc = [order_ managedObjectContext];
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Item" inManagedObjectContext:moc];
    [fetchRequest setEntity:entity];
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"category.name" ascending:YES];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    [fetchRequest setSortDescriptors:sortDescriptors];
    [sortDescriptors release];
    [sortDescriptor release];
    NSFetchedResultsController *controller = [[NSFetchedResultsController alloc]
                                          initWithFetchRequest:fetchRequest
                                          managedObjectContext:moc
                                          sectionNameKeyPath:@"category.name"
                                          cacheName:nil];
    controller.delegate = self;
    self.fetchedResultsController = controller;
    [controller release];
    [fetchRequest release];

    NSError *error = nil;
    if (![fetchedResultsController_ performFetch:&error]) {
        // Error handling
    }
    return fetchedResultsController_;
}

Mi problema ahora es que necesito ordenar estas categorías no por nombre, sino por(NSNumber*) displayOrder atributo que es parte de laCategorí entidad. @PER Necesito los títulos de las secciones en la vista de tabla para seguir usando el @ de la categorname.

Si configuro el sortDescriptor para usarcategory.displayOrder y mantenga la sectionNameKeyPath comocategory.name, los títulos de las secciones funcionan bien, pero el sortDescriptor simplemente es ignorado por fetchedResultsController y las secciones de la tabla están ordenadas por el nombre de la categoría (¿no está seguro por qué

i siguiente idea fue sobrescribir ladisplayOrder método getter, pero eso no me llevó demasiado lejos ya que los tipos de retorno son diferentes, además necesitaba el valor real de displayOrder para la clasificación de la sección.

Así que ahora tengo una solución que se siente un poco torpe (código a continuación), y me pregunto si hay una mejor manera de lograr lo mismo usando solo fetchedResultsController.

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
// The code below grabs a reference to first object for a given section
// and uses it to return the associated category name
{
    id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
    NSArray *menuItems = [sectionInfo objects];
    if ([menuItems count] > 0)
    {
        MenuItem *menuItem = [menuItems objectAtIndex:0];
        NSString *categoryName = menuItem.category.name;
        return categoryName;
    }
    return [sectionInfo name];
}

¿Me estoy perdiendo algo básico aquí?

Gracias de antemano por tus pensamientos.

Rog

Respuestas a la pregunta(4)

Su respuesta a la pregunta