31

有谁知道如何获取一些按字母顺序排序但忽略大小写的结果?

4

4 回答 4

78

感谢您的回复,但我需要对一个简单的“查询”忽略大小写的结果进行排序。您的建议适用于搜索和比较。

用 SQL 来说,我需要一个ORDER BY firstName ASC,并且这个命令对我的使用必须不区分大小写。

我做了一些谷歌搜索,并结束了阅读NSSortDescriptor 类参考,我可以找到我的问题的答案。解决方案是将选择器设置为排序描述符,如下所示:

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES selector:@selector(caseInsensitiveCompare:)];

我希望它对更多的人有用。

于 2010-01-07T13:21:24.400 回答
10

如果应用程序已本地化为多种语言,请考虑使用localizedCaseInsensitiveCompare:选择器而不是caseInsensitiveCompare. 它将具有避免字母“é”在字母“e”之后的效果。

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
于 2012-09-18T10:51:24.523 回答
5

查看NSPredicate 编程指南,但基本上使用 [c] 来忽略大小写:

@"firstName BEGINSWITH[c] $FIRST_NAME"
于 2010-01-06T13:37:46.523 回答
4

斯威夫特版本:

let sortDescriptor = NSSortDescriptor(key: "firstName", ascending: true, selector: #selector(NSString.localizedCaseInsensitiveCompare))
于 2017-03-08T17:54:23.090 回答