localizedCaseInsensitiveCompare:
сравнивает, используя стандартные правила на текущем языке, выбранном пользователем, игнорируя регистр.В вашем случае вы хотите игнорировать диакритические знаки, а не случай.Это означает, что вам нужно сделать что-то еще.
Вам необходимо использовать compare:options:
и передать NSDiacriticInsensitiveSearch
в качестве опции.смотрите здесь .
Чтобы отсортировать массив, используя его, вам нужно либо использовать блок, используя sortedArrayUsingComparator:
, либо реализовать метод категории в NSString
и передать этот селектор в sortedArrayUsingSelector:
.Не забудьте добавить префикс имени метода категории, чтобы он не перекрывался с закрытым методом в платформе.Итак, сделайте что-то вроде
@interface NSString (myaddition)
-(NSComparisonResult)mySecretDiacriticsInsensitveCompare:(NSString*)string;
@end