首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用“NSPredicate”运算符时,带有NSPredicate的NSPredicate失败

使用“NSPredicate”运算符时,带有NSPredicate的NSPredicate失败
EN

Stack Overflow用户
提问于 2016-02-12 18:36:03
回答 1查看 721关注 0票数 3

根据Apples类引用CKQuery,操作符CONTAINS是支持的操作符之一。然而,这似乎不起作用。我有一个名为RecordTypemyRecord,还有一个字段名为name类型String的记录。我尝试用两个不同的谓词来获取记录,一个带有"==“操作符,另一个使用CONTAINS操作符。

代码语言:javascript
运行
复制
func getRecords() {
    let name = "John"
    let Predicate1 = NSPredicate(format: "name == %@",name)
    let Predicate2 = NSPredicate(format: "name CONTAINS %@",name)

    let sort = NSSortDescriptor(key: "Date", ascending: false)
    let query = CKQuery(recordType: "myRecord", predicate: Predicate1)
    // let query = CKQuery(recordType: "myRecord", predicate: Predicate2)
    query.sortDescriptors = [sort]

    let operation = CKQueryOperation(query: query)
    operation.desiredKeys = ["name", "Date"]

    operation.recordFetchedBlock = { (record) in
        print(record["name"])

        operation.queryCompletionBlock = { [unowned self] (cursor, error) in
            dispatch_async(dispatch_get_main_queue()) {
                if error == nil {

                    print ("sucess")
                } else {
                    print("couldn't fetch record error:\(error?.localizedDescription)")

                }
            }

        }

        CKContainer.defaultContainer().publicCloudDatabase.addOperation(operation)
    }

使用Predicate1,输出是:

代码语言:javascript
运行
复制
Optional(John)
sucess

使用Predicate2,输出是:

代码语言:javascript
运行
复制
couldn't fetch record error:Optional("Field \'name\' has a value type of STRING and cannot be queried using filter type LIST_CONTAINS")

同时,使用[c]忽略外壳也会引发服务器问题。

如何正确使用运算符CONTAINS

编辑:--我现在仔细研究了文档,发现CONTAINS只能与SELF一起使用。意味着所有字符串字段都将用于搜索。有没有更好的办法?

EN

回答 1

Stack Overflow用户

发布于 2017-04-21 16:41:57

下面提到了一个例外:

除了一个例外,CONTAINS运算符只能用于测试列表成员资格。当您使用它与self键路径一起执行全文搜索时,会出现例外情况。自键路径使服务器在可搜索的基于字符串的字段中查找指定的令牌字符串。例如,@"self“的谓词字符串在所有标记为包含在全文搜索中的字段中搜索单词”blue“。不能使用自键路径在类型不是字符串的字段中进行搜索。

因此,您可以使用'self‘而不是'%K’来搜索字符串字段的子文本。

关于苹果公司编写的完整文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35369827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档