Я использую CloudKit и хочу выполнить поиск записей на основе их строковых полей.CloudKit Неожиданное выражение для NSPredicate
Apple, документы говорят, что это способ сделать токенизированный поиска полей записи, то:
Чтобы выполнить поиск токенизированный полей записи, то используйте специальный сам оператор. Маркированный поиск выполняет поиск по любым полям, в которых включен полнотекстовый поиск, по умолчанию это все строковые поля. В листинге 5 показан пример, который ищет поля записи для токенов-строк bob и smith. Каждое отдельное слово рассматривается как отдельный токен для поиска. Сравнения нечувствительны к регистру и диакритике. Эти строки токенов могут быть найдены в одном поле или в нескольких полях, но все токены должны присутствовать в записи, чтобы это считалось совпадением.
Листинг 5: Matching поле, содержащее лексического снабжать струной, тетивой и т.п.
NSPredicate predicate = nil; predicate = [NSPredicate predicateWithFormat:@"self contains 'bob smith'"];
Когда я ввожу эту точную строку для предиката, я получаю исключение.
Код:
predicate = [NSPredicate predicateWithFormat:@"self contains 'bob smith'"];
query = [[CKQuery alloc] initWithRecordType:kCKRecord_Level predicate:predicate];
Исключение:
*** Terminating app due to uncaught exception 'CKException', reason: 'Unexpected expression: SELF CONTAINS "bob smith"'
Любые идеи, что может быть не так? Кто-нибудь имел успех с этой предикатной строкой и CloudKit?