ios – 使用CloudKit进行NSPredicate不区分大小写的字符串搜索

我正在尝试搜索CloudKit对象的String字段.以下行成功编译并运行,没有错误.

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"})'

解决方法

从CKQuery的文档中可以看出:
“基于字符串的比较不区分大小写,但所有比较都必须与指定值完全匹配.”

https://developer.apple.com/library/ios/documentation/CloudKit/Reference/CKQuery_class/index.html#//apple_ref/occ/cl/CKQuery

所以我认为BEGINSWITH就是你所需要的.你有没有发现这种情况?

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...