我使用此NSPredicate
执行抓取:
NSPredicate *sameNameAndNumber = [NSPredicate predicateWithFormat:@"name LIKE %@ AND number LIKE %@", field1, field2];
我得到一个例外:
2014-03-01 01:02:03.214 Memories [44692:3d03] * 由于未捕获的异常'NSInternalInconsistencyException'而终止app,原因:'无法进行正则表达式匹配,原因:可以打开模式U_REGEX_MISMATCHED_PAREN(字符串べきだ[べきだ],模式まみれ(涂れ)[まにれ],案例0,佳能0)'
看起来它是由字符串“まみれ(涂れ)[まにれ]”特别引起的。无论与其进行比较的其他字符串如何,我都会得到上述异常。
如果我将上述代码中的LIKE
替换为==
,我就没有这个问题。使用LIKE
导致它将我的测试视为正则表达式吗?它不会逃避我的字符串中的括号和括号吗?我如何忽略查询中的括号和括号?
答案 0 :(得分:1)
您应该使用[NSPredicate predicateWithFormat:@"name Contains %@ AND number Contains %@", field1, field2]
,即使用"Contains"
替换"Like"
中的Predicate
。
如果您在"Like"
句中使用Predicate
,以防field1
等于"(" - 中文左括号,您的应用程序崩溃。然后使用"CONTAINS"
替换"LIKE"
。