【问题标题】:NSPredicate case insensitive string search with CloudKitNSPredicate 使用 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"})'

【问题讨论】:

    标签: ios swift nspredicate cloudkit


    【解决方案1】:

    来自 CKQuery 的文档: “基于字符串的比较不区分大小写,但所有比较都必须与指定值完全匹配。”

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

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

    【讨论】:

    • 甜蜜!一定是第一次读错了文档。谢谢!
    • 我在开发中没有得到与 BEGINSWITH 不区分大小写的匹配。过去 5 年有什么变化吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 2011-12-20
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多