2015-10-13 49 views
1

我有一个云工具包查询,它使用下面的NSPredicate来搜索名称以用户输入到UITextField的值开头的记录。我想让搜索大小写不敏感,所以如果用户搜索“苹果”,它会显示“苹果”和“苹果”的结果。 我该怎么做?我也尝试将查询更改为CONTAINS而不是BEGINSWITH,但该应用程序不返回任何结果,因为它正在查找数组中的值。是否有可能看到该字符串是否包含文本字段字符串? 感谢CloudKit NSPredicate不区分大小写

var p = NSPredicate(format: "name BEGINSWITH %@", titleLabel.text!) 
+1

'BEGINSWITH [c]'? “字符串比较默认情况下是区分大小写和变音符号敏感的,您可以使用方括号内的关键字符c和d来分别指定大小写和变音符不敏感性,例如firstName BEGINSWITH [cd] $ FIRST_NAME。”从https://developer.apple.com/library/watchos/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html#//apple_ref/doc/uid/TP40001795-SW1(String Comparisons section) – Larme

+0

是'$ FIRST_NAME'我应该在哪里放置'titleLabel.text!'? –

+0

''name BEGINSWITH [c]%@“'是你应该做的。 – Larme

回答

0

由于每CKQuerydocs

对于包含字符串值的字段,可以搭配使用BEGINSWITH操作字符串的开头 部分,如图 清单4.您在不能使用其他字符串比较运算符,如 CONTAINS或ENDSWITH。使用此运算符时,该字段必须包含字符串值 ,并且必须以您指定的字符串开头。 匹配 区分大小写。在示例中,谓词匹配记录 ,其favoriteColors字段包含红色,红色或红色字符串的绿色胶带。

+0

BEGINSWITH区分大小写是正确的。但是,您可以使用 NGRredicate(格式:“self contains%@”,NSString(string:name))对自身使用查询 然后它是不区分大小写的。确保在仪表板中标记查询等。 – bnassler