有谁知道如何获取某些结果按字母顺序排序但忽略大小写?
答案 0 :(得分:78)
感谢您的回复,但我需要对一个简单的“查询”忽略大小写的结果进行排序。您的建议适用于搜索和比较。
SQL说,我需要一个ORDER BY firstName ASC
,这个命令对我的用法必须不区分大小写。
我做了一些谷歌搜索,我结束了阅读NSSortDescriptor Class reference,我可以找到我的问题的答案。解决方案是将选择器设置为排序描述符,如下所示:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES selector:@selector(caseInsensitiveCompare:)];
我希望它对更多人有用。
答案 1 :(得分:10)
如果应用已使用多种语言进行本地化,请考虑使用localizedCaseInsensitiveCompare:
选择器而不是caseInsensitiveCompare
。这样可以避免字母“é”出现在字母'e'之后。
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
答案 2 :(得分:5)
查看NSPredicate programming guide,但基本上使用[c]忽略大小写:
@"firstName BEGINSWITH[c] $FIRST_NAME"
答案 3 :(得分:4)
Swift版本:
let sortDescriptor = NSSortDescriptor(key: "firstName", ascending: true, selector: #selector(NSString.localizedCaseInsensitiveCompare))