2011-08-23 11 views
7

Hai bisogno di aiuto per ordinare NSArray che contiene AAO (caratteri svedesi) sto usando per il momentoOrdina NSArray contenente AAO

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

Ma questa è una sorta    Ö

+3

provare a utilizzare 'localizedCompare:' per il selettore di confronto. – Eimantas

+0

Qual è il problema con l'ordinamento? Mi sembra carino come non-svedese. – Richard

+0

@Richard Wikipedia dice che l'ordine è A-Z, Å, Ä, Ö – Jilouc

risposta

5

Questa domanda è simile a quello a cui ho risposto qui Sort NSArray of NSStrings like Addressbook on iphone sort. Devi fare una ricerca diacritica insensibile.

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: richiede iOS 4.0 e versioni successive. Per iOS < 4.0 utilizzare sortedArrayUsingSelector:.

+0

grazie localizedCompare: risolto il mio problema :) – Sebastian

0

Come i commenti sotto la domanda e la risposta afferma; [NSString localizedCompare:] è il modo migliore per ottenere le parole con åäö in modo corretto.

Come ho capito, NSDiacriticInsensitiveSearch tratta å e ä come ae ö come o e non è quello che desideri quando si ordina svedese.