NSPredicate 使用 CloudKit 进行不区分大小写的字符串搜索
Posted
技术标签:
【中文标题】NSPredicate 使用 CloudKit 进行不区分大小写的字符串搜索【英文标题】:NSPredicate case insensitive string search with CloudKit 【发布时间】:2015-06-14 18:35:42 【问题描述】:我正在尝试搜索 CloudKit 对象的字符串字段。以下行成功编译并运行,没有错误。
NSPredicate(format: "Title BEGINSWITH %@", "Apple")
然而,当我尝试添加不区分大小写的搜索时,应用程序崩溃了。
NSPredicate(format: "Title BEGINSWITH[cdl] %@", "Apple")
有错误:
*** Terminating app due to uncaught exception 'CKException', reason: 'Invalid predicate: Title BEGINSWITH[cdl] "Apple" (Error Domain=CKErrorDomain Code=12 "Invalid operator in <Title BEGINSWITH[cdl] "Apple">: Unsupported operator: BEGINSWITH" UserInfo=0x7fb69d02e910 ck_isComparisonError=true, NSLocalizedDescription=Invalid operator in <Title BEGINSWITH[cdl] "Apple">: Unsupported operator: BEGINSWITH, NSUnderlyingError=0x7fb69d02e9e0 "Unsupported operator: BEGINSWITH")'
【问题讨论】:
【参考方案1】:来自 CKQuery 的文档: “基于字符串的比较不区分大小写,但所有比较都必须与指定值完全匹配。”
https://developer.apple.com/library/ios/documentation/CloudKit/Reference/CKQuery_class/index.html#//apple_ref/occ/cl/CKQuery
所以我认为 BEGINSWITH 就是您所需要的。你没有发现是这种情况吗?
【讨论】:
甜蜜!一定是第一次读错了文档。谢谢! 我在开发中没有得到与 BEGINSWITH 不区分大小写的匹配。过去 5 年有什么变化吗?以上是关于NSPredicate 使用 CloudKit 进行不区分大小写的字符串搜索的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 NSPredicate 和 CloudKit 获取特定用户的最新帖子?
使用 NSPredicate 查询 CloudKit 以获取空白(或 null 或其他)的日期
将 NSPredicate/NSCompoundPredicate 与 Where 子句或可选返回一起使用,CloudKit