2015-07-16 1 views
1

У меня есть Cloudkit записи с «Keywords поле» типа «text»Как выполнить текстовый поиск в записях Cloudkit?

я могу использовать этот шаблон для извлечения только поле ключевых слов ВСЕХ записей

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) 

Я хотел бы ограничить возвращаемый записи тем, где поле KeyWords соответствует строке поиска, которую я предполагаю, означает предоставление подходящего предиката.

documentation указывает, что СОДЕРЖИТ только для списков, если вы не использовать само ключевое слово, которое ищет все текстовые поля

Однако, заменив декларацию предиката с:

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 

Я уверен, что это что-то просто, но документы не являются полными еще

ответ

2

Вы могли бы использовать этот предикат для маркеров поиска:

NSPredicate(format: "allTokens TOKENMATCHES[cdl] %@", tokens)