2016-04-17 9 views
2

В моем проекте с типом записи CloudKit «Пользователь» (я также тестировал другие имена типов записей) Я создаю запись с полем электронной почты.Cloudkit возвращает записи с определенной строкой

Я пытаюсь точно подобрать это письмо и получить записи, которые соответствуют. Я делаю это с предикатом IN или == (для одного или списка писем).

let query = CKQuery(recordType: "User", predicate: NSPredicate(format: "email IN %@", emails)) 
let query = CKQuery(recordType: "User", predicate: NSPredicate(format: "email == %@", "[email protected]")) 

электронной почты У меня возникли проблемы с является «[email protected]», любая попытка получить запись с этой электронной почты возвращает 0, однако, если я изменить его на «[email protected]» его будет извлекать OK.

Первоначально я предполагал, что это специальные символы, но другие строки с ними работают нормально. Тогда я предполагаю длину, но другие более длинные строки работают нормально.

Есть ли у кого-нибудь еще эта проблема? Мне трудно доверять CloudKit, не понимая, почему он не может соответствовать этой строке.

Я задал аналогичный вопрос, но перед тем, как у меня появилась информация, пользователь смог проверить это и получить те же результаты с этой строкой. Этот пост намного более краткий и имеет шаги для воссоздания.

+0

Вы говорите, что если вы не измените предикат для ' "электронной почты ==% @", "[email protected]"' '(не T'), то вы получите вернуть ожидаемый результат? Если это так, то вы действительно уверены, что значение в базе данных на самом деле не 'julio_ukohgsp_chevez @ tfbnw.ne'? – rmaddy

+0

Да, я на 100% уверен. Это странно. Я проверил много раз и набрал его вручную. Я могу попробовать вашу конкретную строку, но даже замена любого 1 символа сработала. – JDM

+0

У меня точно такая же проблема. Вы нашли что-нибудь об этом? –

ответ

0

Попробуйте это:

let predicateString = "email IN '\(emails)'" 
let predicate = NSPredicate(format: predicateString) 
Смежные вопросы