CloudKit Неожиданное выражение для NSPredicate
Я использую CloudKit и хочу выполнить поиск записей на основе их строковых полей.
Документы Apple говорят, что это способ сделать поиск по полям записи по токенам:
Чтобы выполнить поиск полей записи по токенам, используйте специальный оператор self. Поиск по токену выполняет поиск во всех полях, для которых включен полнотекстовый поиск, которые по умолчанию являются строковыми полями. В листинге 5 показан пример, который ищет в полях записи строки токенов bob и smith. Каждое отдельное слово рассматривается как отдельный токен с целью поиска. Сравнения нечувствительны к регистру и диакритическим знакам. Эти строки токенов могут быть найдены в одном поле или в нескольких полях, но все токены должны присутствовать в записи, чтобы считаться совпадающими.
Листинг 5: Соответствие полю, содержащему токенизированную строку
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?