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

CloudKit - NSPredicate 用于在引用列表中查找包含多个 CKReference 的所有记录

Cloudkit 的 NSPredicate 匹配字符串

CloudKit NSPredicate 不区分大小写