我有一个从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];
有没有办法让这些特殊的字符名称出现在我上面描述的位置?在网上没有找到任何东西...
非常感谢。
答案 0 :(得分:10)
感谢您的回答,我可以另外(简单)解决问题!
我只需要像这样修改NSSortDescriptor:
[NSSortDescriptor sortDescriptorWithKey: @"name" ascending: YES selector: @selector(localizedCompare:)]
答案 1 :(得分:3)
您应该使用UILocalizedIndexedCollation对条目进行排序和分类。实现此问题的代码在问题NSFetchedResultsController v.s. UILocalizedIndexedCollation
中UILocalizedIndexedCollation的构建是为了能够在每种语言的基础上根据当前语言设置对单词进行分类。 Á和à将放在A部分。