iPhone CoreData: сортировка с умлаутами

У меня есть приложение, которое извлекает данные (список стран) из базы данных sqlite. Страны указаны на немецком языке и содержат умлауты, например Österreich. Я хочу получить эти страны, отсортированные по имени, и ожидаю, что Österreich будет рядом с другими странами с буквой «O», но вместо этого он находится в конце результатов.

Этот код используется для получения отсортированных стран:

 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

 [fetchRequest setEntity: [NSEntityDescription entityForName: @"Continent" inManagedObjectContext: moc]];
    [fetchRequest setSortDescriptors: [NSArray arrayWithObject: [[[NSSortDescriptor alloc] initWithKey: @"name" ascending: YES] autorelease]]];

 NSError *error = nil;
 NSArray *result = [moc executeFetchRequest: fetchRequest error: &error];

Есть ли способ, чтобы эти специальные имена символов отображались в позиции, которую я описал выше? В инете ничего не нашел по этому поводу...

Большое спасибо.


person Cornelius    schedule 28.09.2011    source источник


Ответы (2)


Спасибо за ваши ответы, я мог бы решить проблему другим (простым) способом!

Мне просто нужно было изменить NSSortDescriptor следующим образом:

[NSSortDescriptor sortDescriptorWithKey: @"name" ascending: YES selector: @selector(localizedCompare:)]
person Cornelius    schedule 29.09.2011
comment
В iOS ›= 4.0 вы должны использовать localizedStandardCompare: - person Brent Priddy; 29.09.2011

Вы должны использовать UILocalizedIndexedCollation для сортировки и классификации записей по разделам. Код для реализации этого находится в вопросе NSFetchedResultsController vs. UILocalizedIndexedCollation

UILocalizedIndexedCollation был создан, чтобы иметь возможность классифицировать слова для каждого языка на основе текущих языковых настроек. Á и à будут помещены в секцию A.

person Brent Priddy    schedule 28.09.2011