ios - How do I perform text search on Cloudkit records? -


i have cloudkit records 'keywords' field of type 'text'

i can use pattern fetch keywords field of records

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) 

i'd limit returned records keywords field matches search string assume means providing suitable predicate.

the documentation indicates contains lists unless use self keyword searches text fields

however, replacing predicate declaration with:

let predicate = nspredicate(format: "self contains[c] %@", searchstring) 

results in

*** terminating app due uncaught exception 'ckexception', reason: 'predicate comparison options not supported expression: self contains[c] 

and using

let predicate = nspredicate(format: "self contains %@", searchstring) 

results in

*** terminating app due uncaught exception 'ckexception', reason: 'unexpected expression: self contains 

i sure straightforward docs not complete yet

you use predicate token search:

nspredicate(format: "alltokens tokenmatches[cdl] %@", tokens) 

Comments