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"
,