Ordenar el contacto alfabéticamente con la Sección UITableView

Tengo un NSMutableArray : self.contact con objects (nombre orderado alfabéticamente):

 ( "Anna Haro", "Cheesy Cat", "Daniel Higgins", "David Taylor", "Freckles Dog", "Hank Zakroff", "John Appleseed", "Kate Be\U00e9ll" ) 

Tengo éxito para mostrar a la derecha el alfabeto con esta línea de código:

 - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { return[NSArray arrayWithObjects:@"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]; } 

Ahora, ¿tengo que implementar el método que me permite acceder en la buena sección?

 - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString*)title atIndex:(NSInteger)index { } 

¿Y tal vez tengo que cambiar numberOfSections ? Aquí está mi código:

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1 } 

siguiente :

Hice dos Array: NSArray *test = [self.contact sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; :

 ( "Anna Haro", "Cheesy Cat", "Daniel Higgins", "David Taylor", "Freckles Dog", "Hank Zakroff", "John Appleseed", "Kate Be\U00e9ll" ) 

y

NSMutableDictionary dicoAlphabet:

 // Dictionary will hold our sub-arrays self.dicoAlphabet = [NSMutableDictionary dictionary]; // Iterate over all the values in our sorted array for (NSString *value in test) { // Get the first letter and its associated array from the dictionary. // If the dictionary does not exist create one and associate it with the letter. NSString *firstLetter = [value substringWithRange:NSMakeRange(0, 1)]; NSMutableArray *arrayForLetter = [self.dicoAlphabet objectForKey:firstLetter]; if (arrayForLetter == nil) { arrayForLetter = [NSMutableArray array]; [self.dicoAlphabet setObject:arrayForLetter forKey:firstLetter]; } // Add the value to the array for this letter [arrayForLetter addObject:value]; } // arraysByLetter will contain the result you expect NSLog(@"Dictionary: %@", self.dicoAlphabet); 

devoluciones :

 Dictionary: { A = ( "Anna Haro" ); C = ( "Cheesy Cat" ); D = ( "Daniel Higgins", "David Taylor" ); F = ( "Freckles Dog" ); H = ( "Hank Zakroff" ); J = ( "John Appleseed" ); K = ( "Kate Be\U00e9ll" ); } 

testing el siguiente enlace. Te ayudará a hacer esto con bastante facilidad. Avísame si tienes algún problema mientras haces esto. Tutorial para los encabezados de la sección del controller de vista de contacto y el índice

Por lo tanto, para datos no estáticos, digamos que tiene una serie de contactos llamados arrContacts, entonces puede orderarlos fácilmente usando [arrContacts sortUsingSelector: @selector( localizedCaseInsensitiveCompare:)] ahora para get una matriz con todos los títulos de la sección simplemente recorrer el set y para cada object, recortar la cadena a la primera letra y agregarla a esta matriz si aún no está allí. Eso es todo, ahora tienes una list de secciones en una matriz y contactos orderados alfabéticamente en otra. Déjame saber como va. 😉