Ordenar NSArray con mayúsculas

Tengo un NSArray que se parece a esto:

 contactNamesArray = [[NSMutableArray alloc] initWithObjects:@"John Galt", @"Michael Wales", @"James Joyce", @"Shakespeare", nil]; 

De ahí, quiero hacer un NSArray que tenga todos los mismos valores , pero que se vería así:

 newContactNamesArray = [[NSMutableArray alloc] initWithObjects:@"john galt", @"michael wales", @"james joyce", @"shakespeare", nil]; 

Quiero hacer esto porque quiero hacer una búsqueda en esa segunda matriz y quiero replace cada letra mayúscula en ella con una letra normal.

¿Cómo haces algo así en Objective-C? ¡Gracias por adelantado!

Puede pasar por una matriz y convertir cada elemento en minúsculas llamando al

 [element lowercaseString] 

en eso. Sin embargo, esto es summente subóptimo para implementar una búsqueda insensible a mayúsculas y minúsculas: un mejor enfoque sería mantener cadenas como están, y emplear el método caseInsensitiveCompare para su búsqueda.

¿Por qué estás haciendo una copy? Puede orderar un NSArray de forma insensible a mayúsculas y minúsculas:

 NSArray *sortedContactNamesArray = [contactNamesArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; 

Además, tenga en count que sortedArrayUsingSelector devuelve una matriz con references a los elementos originales, no copys de ellos.