iPhone CoreData:使用变音符号排序

Posted

技术标签:

【中文标题】iPhone CoreData:使用变音符号排序【英文标题】:iPhone CoreData: Sort with umlauts 【发布时间】:2011-09-28 14:59:29 【问题描述】:

我有一个从 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];

有没有办法让那些特殊的字符名出现在我上面描述的位置?在互联网上没有找到任何关于此的...

非常感谢。

【问题讨论】:

【参考方案1】:

感谢您的回答,我可以用另一种(简单)方式解决问题!

我只需要像这样修改 NSSortDescriptor:

[NSSortDescriptor sortDescriptorWithKey: @"name" ascending: YES selector: @selector(localizedCompare:)]

【讨论】:

ios >= 4.0 中您应该使用本地化标准比较:【参考方案2】:

您应该使用 UILocalizedIndexedCollat​​ion 对条目进行排序和分类。实现这一点的代码在问题NSFetchedResultsController v.s. UILocalizedIndexedCollation

UILocalizedIndexedCollat​​ion 旨在根据当前语言设置对每种语言的单词进行分类。 Á 和 à 将放在 A 部分。

【讨论】:

以上是关于iPhone CoreData:使用变音符号排序的主要内容,如果未能解决你的问题,请参考以下文章

使用 BIML 导入 CSV 后变音符号丢失

C - 如何避免变音符号/重音敏感问题

如何在 Sqlite 中实现重音/变音符号不敏感搜索? [复制]

debezium 服务器中的德语变音符号

MySql Unicode 排序规则 utf8mb4_german2_ci 未找到 *** 德语变音符号排序规则 ***

使用 utf8_general_ci 排序规则和 utf8 字符集服务器的德语变音符号的搜索结果区分大小写