Как вы получаете локализованный names
от сущности CoreData? Дело не в том, что localizedCompare:
волшебным образом извлекает локализованную версию строк и сравнивает их. Вместо этого он использует локализованные порядки сортировки для тех же строк.
Сортированная версия массива, содержащего @"England"
, @"France"
, @"Germany"
, будет одинаковой в любой стране ... они не содержат символов с акцентом или чего-либо еще. Результат localizedCompare:
может измениться только тогда, когда два языка используют различный порядок сортировки букв.
Если вы хотите извлечь что-то из Localizable.strings
на основе свойства сущностей CoreData, вам нужно сделать это вручную. Бэкенд Sqlite CoreData не будет обрабатывать это на уровне запросов на выборку. Поэтому вам нужно сначала извлечь записи в NSArray
, а затем отсортировать их, используя sortedArrayUsing...:
, передав метод, который извлекает локализованные имена по NSLocalizedString
и сравнивает их.