我正在使用 Core Data,并且在 fetch 请求中有这样的谓词:
NSString *predicateStr = [NSString stringWithFormat:@"name like[c] '%@'",name];
NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateStr];
这很有效,但有一个例外:有时名称可能以反斜杠(“\”)结尾,因为该部分是用户生成的,也可能来自应用程序外部。
当它发生时,我收到这样的错误:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:
'无法解析格式字符串“(name like [c]'mqcu \')”'
所以我尝试stringByReplacingOccurrencesOfString
这样使用:
NSString *predicateStr = [NSString stringWithFormat:@"(name like[c] '%@')", [name stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"]];
但后来我收到这样的错误:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:
“反斜杠是通配符,并且不能在字符串末尾未转义。”
如何正确转义反斜杠?