Alfabeto completo para índice de secciones en datos centrales

He implementado una tabla llena de datos básicos y ahora estoy intentando indexarla con secciones mostrando el alfabeto lateral (en formatting de Contactos).

En el siguiente código, si utilizo la línea comentada, solo tengo letras para las secciones existentes. Pero quiero todo el alfabeto, así que he cambiado la matriz devuelta:

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { //return [fetchedResultsController sectionIndexTitles]; indexArray = [NSArray arrayWithObjects: @"{search}", @"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J",@"K", @"L", @"M", @"N", @"O", @"P", @"Q", @"R", @"S", @"T", @"U", @"V", @"W", @"X", @"Y", @"Z", @"#", nil]; return indexArray; } 

Todas las letras se muestran en el índice lateral. Pero ahora tengo que implementar el método que devuelve el índice de la sección seleccionada, y aquí tengo algunos problemas:

 - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index { //return [fetchedResultsController sectionForSectionIndexTitle:title atIndex:index]; NSString *correspondingLetter = [indexArray objectAtIndex:index]; NSUInteger correspondingIndex = [[fetchedResultsController sections] indexOfObject:correspondingLetter]; NSLog(@"------index:%i\ncorrespondingLetter: %@\ncorrespondingIndex: %i\n", index,correspondingLetter, correspondingIndex); return correspondingIndex; } 

Con el código anterior, si utilizo la línea comentada, tengo un error cada vez que selecciono una letra que no tiene la sección correspondiente. Entonces, lo que trato de hacer es recuperar el índice de la sección con la letra que se ha seleccionado y search su position en las secciones existentes. Pero no funciona. ¿Tienes alguna idea?

Gracias de antemano, yassa

    Deberías search en

     @property (nonatomic, readonly) NSArray *sectionIndexTitles 

    del fetchedResultController .
    Pero, si es un índice que no existe, recibirá NSNotFound y tendrá que hacer algo de lógica para devolver el índice de letras anterior, o el anterior, o el anterior, etc.

    Para admitir idiomas adicionales, no usaría caracteres codificados. Mi solución inspirada por la respuesta aceptada:

     - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { return [[UILocalizedIndexedCollation currentCollation] sectionIndexTitles]; } - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index { NSString *correspondingLetter = [[[UILocalizedIndexedCollation currentCollation] sectionIndexTitles] objectAtIndex:index]; return [[self.fetchedResultsController sectionIndexTitles] indexOfObject:correspondingLetter]; }