Regex Matching Failure на NSPredicate

Я выполняю выборку с этим NSPredicate:

NSPredicate *sameNameAndNumber = [NSPredicate predicateWithFormat:@"name LIKE %@ AND number LIKE %@", field1, field2];

Я получаю исключение:

2014-03-01 01: 02: 03.214 Воспоминания [44692: 3d03] * Завершение работы приложения из-за необработанного исключения "NSInternalInconsistencyException", причина: "Невозможно выполнить сопоставление регулярному выражению, причина: Невозможно открыть шаблон U_REGEX_MISMATCHED_PAREN (строка べきだ [だ きだ], шаблон まみれ (塗れ) [まにれ], случай 0, канон 0)'

Похоже, что это вызвано именно строкой "まみれ (塗れ) [まにれ]". Независимо от другой строки, с которой сравнивается, я получаю вышеупомянутое исключение.

Если я заменю LIKE в приведенном выше коде с ==У меня нет этой проблемы. Является ли использование LIKE заставляя это рассматривать мой тест как регулярное выражение? Разве это не выходит за скобки и скобки в моей строке? Как бы я игнорировал скобки и скобки в моих запросах?

1 ответ

Вы должны использовать [NSPredicate predicateWithFormat:@"name Contains %@ AND number Contains %@", field1, field2] а именно, использовать "Contains" заменить "Like" в Predicate,

Если вы используете "Like" в Predicate предложение, если ваш field1 равно "(" - китайская левая скобка, ваше приложение падает. Тогда используйте "CONTAINS" заменить "LIKE",

Другие вопросы по тегам