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】:您应该使用 UILocalizedIndexedCollation 对条目进行排序和分类。实现这一点的代码在问题NSFetchedResultsController v.s. UILocalizedIndexedCollation
UILocalizedIndexedCollation 旨在根据当前语言设置对每种语言的单词进行分类。 Á 和 à 将放在 A 部分。
【讨论】:
以上是关于iPhone CoreData:使用变音符号排序的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Sqlite 中实现重音/变音符号不敏感搜索? [复制]
MySql Unicode 排序规则 utf8mb4_german2_ci 未找到 *** 德语变音符号排序规则 ***