iPhone CoreData - 如何获取托管对象,并忽略大小写它们?

时间:2010-01-06 13:23:51

标签: iphone sorting core-data nssortdescriptor

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

4 个答案:

答案 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))