3

使用它时排序顺序是否有任何差异(用于内存排序)

[[UILocalizedIndexedCollation currentCollation] sortedArrayFromArray:namesArray collationStringSelector:@selector(sortName)]

和这个(用于CoreData排序)

fetchRequest.sortDescriptors =
    [NSArray arrayWithObject:[NSSortDescriptor
                              sortDescriptorWithKey:@"name" ascending:YES
                              selector:@selector(localizedStandardCompare:)]];

我想用 CoreData 存储一个庞大的数据集,然后在 TableView 中显示它。在这种情况下,如果任何记录发生变化,我将需要使用第一种方法重新处理整个数组,这需要一段时间,因此第二种方法更可取。

我知道对于英语,排序顺序应该是相同的,但我真的不知道使用带有变音符号的字母和使用非拉丁字母的语言。

对你的帮助表示感谢。

4

1 回答 1

2

一个区别是,UILocalizedIndexedCollation当您的语言环境为 en_US 时,非拉丁字符似乎会按语音排序。例如,在英文 iPhone 上,ス(发音为“su”)将与其他真正与“S”相关的单词一起位于“S”之下。使用localizedStandardCompare:,相同的 ス 字符将出现在 Z 之后。

带有变音符号的拉丁字符似乎对这两种类型的处理方式相同(例如,“Aaa”<“Åab”<“Aac”同时使用UILocalizedIndexedCollationand localizedStandardCompare:)。

可能还有很多不同之处,尤其是当您开始将设备设置为其他语言环境时。我还没有弄清楚如何让 CoreData 以与UILocalizedIndexedCollation不幸相同的方式进行排序,因此根据要求采取了使用内存数组或UILocalizedIndexedCollation完全避免的方法。如果有人知道更好的方法,那就太棒了。

于 2013-04-25T04:57:17.560 回答