UILocalizedIndexedCollat​​ion 区域设置不同于英语

Posted

技术标签:

【中文标题】UILocalizedIndexedCollat​​ion 区域设置不同于英语【英文标题】:UILocalizedIndexedCollation locale different than English 【发布时间】:2013-05-30 09:14:11 【问题描述】:

我正在使用带有 UILocalizedIndexedCollat​​ion 的 Tableview 在右侧显示索引,但我手机上的语言是瑞典语 (svenska),因此我在 A-Z 之后看到了一些特定于瑞典语的特殊字符,例如 å ä ö 。在 A-Z 中,一些字符丢失了,例如 Q、X 等,我认为这些字符在瑞典语言环境中不存在。

当我点击说字符 "S" 时遇到问题,即使 "S" 中有条目,它也会显示部分 "R" 而不是 "S" 。同样对于最后一个字符“å”、“ä”,它会将我分别带到 X 和 Y,尽管 LocalizedIndexedCollat​​ion 中没有“X”。

我也跟着这个教程http://benedictcohen.co.uk/blog/archives/230,但它并没有解决我的问题。

在这方面的任何帮助都会很棒。

谢谢。

【问题讨论】:

【参考方案1】:

在韩语中与 ios7 GM 相同。

我也检查了日语,但没有我们面临的问题。 日语和韩语的区别在于排序(link)

在韩语中,韩语出现在英语之前。 但是在日语中,当我测试时,英语出现在日语之前。

当我检查这个方法时,

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index

    NSLog(@"%i", index);
    NSLog(@"%i", [[UILocalizedIndexedCollation currentCollation] sectionForSectionIndexTitleAtIndex:index]);

我可以注意到 sectionForSectionIndexTitleAtIndex 异常地按照给定的索引增加。

sectionForSectionIndexTitleAtIndex 增加 4 ("A" + 1 - "F"),当 "ㄴ" -> "ㄷ" (索引只增加 1)。 sectionForSectionIndexTitleAtIndex 的增量正在重复。 1、4、1、4 ...

我对这个问题的结论是 Unicode 中的 iOS7 错误与 ASCII 排序。 所以,我将临时修改 tableView:sectionForSectionIndexTitle:atIndex 方法按我的预期工作。

【讨论】:

如果我用这个改变 sectionIndecTitles 的顺序,(A、B、C、D、E、F、G、H、I、J、K、L、M、N、O、P, Q、R、S、T、U、V、W、X、Y、Z、ㄱ、ㄴ、ㄷ、ㄹ、ㅁ、ㅂ、ㅅ、ㅇ、ㅈ、ㅊ、ㅋ、ㅌ、ㅍ、ㅎ)、问题为我解决了。 如果您能在代码中分享您的答案,那将非常有帮助。苹果有没有报告这个问题?它似乎在 7.1 中也被破坏了。

以上是关于UILocalizedIndexedCollat​​ion 区域设置不同于英语的主要内容,如果未能解决你的问题,请参考以下文章

UILocalizedIndexedCollat​​ion 和非英文索引

UILocalizedIndexedCollat​​ion 区域设置不同于英语

使用 UILocalizedIndexedCollat​​ion sectionForObject:collat​​ionStringSelector 的动态选择器

带有字符串数组的 UILocalizedIndexedCollat​​ion

如何在 UILocalizedIndexedCollat​​ion 中将汉字排序为#

带有索引 UITableViewController 和 UILocalizedIndexedCollat​​ion 的 NSFetchedResultsController