2011-08-23 14 views
7

Necesita ayuda para ordenar NSArray que contiene AAO (caracteres suecos) estoy usando por el momentoOrdenar NSArray contiene AAO

[keyArray addObjectsFromArray:[[names allKeys]sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]]; 

Pero esto es una especie a a Ö

+3

intente utilizar 'localizedCompare:' para el selector de comparación. – Eimantas

+0

¿Cuál es el problema con el orden de clasificación? Me parece bien como un hablante no sueco. – Richard

+0

@Richard Wikipedia dice que la orden es A-Z, Å, Ä, Ö – Jilouc

Respuesta

5

Esta pregunta es similar a el que respondí aquí Sort NSArray of NSStrings like Addressbook on iphone sort. Debes hacer una búsqueda insensible a la diacrítica.

NSArray *array = [NSArray arrayWithObjects:@"aar", @"åäö", @"aao", nil]; 

NSArray *sorted = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { 
    return [(NSString*)obj1 compare:obj2 options:NSDiacriticInsensitiveSearch|NSCaseInsensitiveSearch]; 
}]; 

Nota: sortedArrayUsingComparator: requiere iOS 4.0 o superior. Para iOS < 4.0 use sortedArrayUsingSelector:.

+0

Gracias localizedCompare: resuelto mi problema :) – Sebastian

0

Como los comentarios debajo de la pregunta y la respuesta declaran; [NSString localizedCompare:] es la mejor manera de obtener palabras con åäö ordenadas de la manera correcta.

Según tengo entendido, NSDiacriticInsensitiveSearch trata a å y ä como a y ö como o y eso no es lo que desea al ordenar sueco.

Cuestiones relacionadas