iPhone CoreData: сортировка с умлаутами - PullRequest
10 голосов
/ 28 сентября 2011

У меня есть приложение, которое выбирает данные (список стран) из базы данных 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];

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

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

Ответы [ 2 ]

10 голосов
/ 29 сентября 2011

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

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

[NSSortDescriptor sortDescriptorWithKey: @"name" ascending: YES selector: @selector(localizedCompare:)]
3 голосов
/ 28 сентября 2011

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

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

...