2011-08-23 17 views
7

Potrzebujesz pomocy sortowania NSArray, który zawiera AAO (szwedzki znaków) używam w tej chwiliSortuj NSArray zawierających AAO

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

Ale to rodzaj A A A Ö

+3

spróbuj użyć 'localizedCompare:' dla selektora porównania. – Eimantas

+0

Jaki jest problem z kolejnością sortowania? Wydaje mi się, że jestem nie-Szwedzkim prelegentem. – Richard

+0

@Richard Wikipedia mówi, że zamówienie jest A-Z, Å, – Jilouc

Odpowiedz

5

To pytanie jest podobna do ten, na który tutaj odpowiedziałam Sort NSArray of NSStrings like Addressbook on iphone sort. Musisz wykonać wyszukiwanie bez znaków diakrytycznych.

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

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

Uwaga: sortedArrayUsingComparator: wymaga iOS 4.0 i wyżej. W przypadku iOS < 4.0 użyj sortedArrayUsingSelector:.

+0

dzięki localizedCompare: rozwiązany mój problem :) – Sebastian

0

W komentarzach poniżej pytanie i odpowiedź stwierdza; [NSString localizedCompare:] to najlepszy sposób na uzyskanie słów z åäö posortowanymi we właściwy sposób.

Jak rozumiem, NSDiacriticInsensitiveSearch traktuje å i ä jak i ö, o, a to nie jest to, czego potrzebujesz podczas sortowania szwedzkiego.