我如何在Cloudkit记录上执行文本搜索?

问题描述 投票:2回答:1

我有Cloudkit记录,其'Keywords'字段的类型为'text'

我可以使用此模式仅获取所有记录的关键词字段

let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Library", predicate: predicate)
var operation = CKQueryOperation(query: query)  
operation.desiredKeys = ["KeyWords"]
operation.recordFetchedBlock = { [weak self] (record:CKRecord!) in
  ...
}
operation.queryCompletionBlock = { [weak self] (cursor:CKQueryCursor!, error:NSError!) in
  ...
}
self.publicDatabase!.addOperation(operation)

我想将返回的记录限制为那些关键字字段与搜索字符串匹配的记录,我认为这意味着提供合适的谓词。

documentation表示CONTAINS仅适用于列表,除非您使用搜索所有文本字段的self关键字

但是,将谓词声明替换为:

let predicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchString)

结果]

*** Terminating app due to uncaught exception 'CKException', reason: 'Predicate comparison options are not supported for expression: SELF CONTAINS[c]

并使用

let predicate = NSPredicate(format: "SELF CONTAINS %@", searchString)

结果

*** Terminating app due to uncaught exception 'CKException', reason: 'Unexpected expression: SELF CONTAINS

我确定这很简单,但是文档尚未完成

[我有一个Cloudkit记录,其'关键字'字段的类型为'文本',我可以使用此模式来获取所有记录的关键字字段,让谓词= NSPredicate(值:true)让查询= CKQuery(...

ios swift cloudkit
1个回答
1
投票

您可以使用此谓词进行令牌搜索:

© www.soinside.com 2019 - 2024. All rights reserved.