【问题标题】:get the string used by localizedStandardCompare when it did a comparison获取localizedStandardCompare在进行比较时使用的字符串
【发布时间】:2011-09-23 03:51:18
【问题描述】:

我正在使用localizedStandardCompare: 对数组进行排序,这使我能够以正确的本地化顺序对对象进行排序。现在我想在index 中使用它们作为UITableView,这意味着我需要生成章节标题。由于localizedStandardCompare: 对它们进行了本地化,因此以“Æ”开头的字符串与 A 对象一起排序。

因此,如果我迭代数组并为每个第一个字母创建一个部分,我将得到“A”、“Æ”、“A”、“B”等部分。有没有办法让字符串是用来比较的,还是至少模仿它?我尝试过使用不同的编码进行转换,但没有一个会返回一个代表“Æ”的“A”。

关于如何为本地化字符串生成章节标题还有其他建议吗?

【问题讨论】:

  • 我不确定如何实现这一点,但您查看过UILocalizedIndexedCollation 吗?链接:developer.apple.com/library/ios/#documentation/iPhone/Reference/…
  • 谢谢!我以前从来没有注意到那个课程,它看起来正是我所需要的。
  • 如果这对您有用,请将其发布为答案并将其标记为已接受,这样这个问题就不会出现未回答的情况,其他有相同问题的人可以更轻松地找到解决方案。
  • 实际问题仍然悬而未决 - UILocalizedIndexedCollation 只有在您有能力将所有数据加载到内存中时才可以选择。

标签: objective-c cocoa-touch uitableview localization nsstring


【解决方案1】:

您可以使用CFStringTransform 方法来获取使用的字符串。

例如,使用kCFStringTransformToLatin 值从输入字符串中获取一个简单的拉丁字符串。

这实际上与localizedStandardCompare: 方法的行为并不完全相同,但您可以使用字符串转换为用于实际排序的对象生成附加属性。

关于这个话题有很多很好的资源:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 2014-02-17
    • 2011-10-16
    • 2017-05-30
    • 2020-03-20
    • 1970-01-01
    • 2012-06-12
    相关资源
    最近更新 更多