- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
使用这个(内存排序)时排序顺序有区别吗
[[UILocalizedIndexedCollation currentCollation] sortedArrayFromArray:namesArray collationStringSelector:@selector(sortName)]
和这个(用于 CoreData 排序)
fetchRequest.sortDescriptors =
[NSArray arrayWithObject:[NSSortDescriptor
sortDescriptorWithKey:@"name" ascending:YES
selector:@selector(localizedStandardCompare:)]];
我想用 CoreData 存储一个巨大的数据集,然后在 TableView 中显示它。在这种情况下,如果任何记录发生变化,我将需要使用第一种方法对整个数组进行求值,这需要一段时间,因此第二种方法更为可取。
我知道英语的排序顺序应该相同,但我真的不知道使用带变音符号的字母和使用非拉丁字母的语言。
非常感谢您的帮助。
最佳答案
一个区别是使用 UILocalizedIndexedCollation
,当您的区域设置为 en_US 时,非拉丁字符似乎会按语音排序。例如,在英文 iPhone 上,su(发音为“su”)会放在“S”下面,连同其他真正与“S”相关的词。使用 localizedStandardCompare:
,相同的 su 字符会出现在 Z 之后。
带变音符号的拉丁字符在两种类型中的处理方式相同(例如,“Aaa”<“Åab”<“Aac”与 UILocalizedIndexedCollation
和 localizedStandardCompare:
).
可能还有很多不同之处,尤其是当您开始将设备设置为其他语言环境时。不幸的是,我还没有弄清楚如何让 CoreData 以与 UILocalizedIndexedCollation
相同的方式进行排序,所以我使用内存数组或完全避免使用 UILocalizedIndexedCollation
,具体取决于要求。如果有人知道更好的方法,那就太好了。
关于ios - 使用 UILocalizedIndexedCollation 和 localizedStandardCompare 对字符串进行排序 : method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11523478/
我是一名优秀的程序员,十分优秀!