Сортировка NSArray igonring Умлаутс - PullRequest
0 голосов
/ 02 ноября 2010

Я хочу отсортировать массив, чтобы умлауты рассматривались как обычные версии символов (ä == a и т. Д.).Я думал, localizedCaseInsensitiveCompare: должен сделать свое дело.Но это не так.Кто-нибудь?

Лучший
–f

1 Ответ

3 голосов
/ 02 ноября 2010

localizedCaseInsensitiveCompare: сравнивает, используя стандартные правила на текущем языке, выбранном пользователем, игнорируя регистр.В вашем случае вы хотите игнорировать диакритические знаки, а не случай.Это означает, что вам нужно сделать что-то еще.

Вам необходимо использовать compare:options: и передать NSDiacriticInsensitiveSearch в качестве опции.смотрите здесь .

Чтобы отсортировать массив, используя его, вам нужно либо использовать блок, используя sortedArrayUsingComparator:, либо реализовать метод категории в NSString и передать этот селектор в sortedArrayUsingSelector:.Не забудьте добавить префикс имени метода категории, чтобы он не перекрывался с закрытым методом в платформе.Итак, сделайте что-то вроде

@interface NSString (myaddition)
-(NSComparisonResult)mySecretDiacriticsInsensitveCompare:(NSString*)string;
@end
...