我设置我的谓词的字符串是这样的:NSPredicate错误时字符串包含“在可可触摸
[NSString stringWithFormat:@"(name like '%@')",name]
但如果名称中包含'
字符,例如,如果名称是"family's"
它崩溃。
我该如何解决这个问题?
我设置我的谓词的字符串是这样的:NSPredicate错误时字符串包含“在可可触摸
[NSString stringWithFormat:@"(name like '%@')",name]
但如果名称中包含'
字符,例如,如果名称是"family's"
它崩溃。
我该如何解决这个问题?
您不需要'in NSPredicate
。他们正在自动插入。
试试看
[NSPredicate predicateWithFormat:@"(name like %@)",name];
此坠毁的原因是因为该预测值被中断。 如果你创建一个带格式的字符串,就像你的例子一样,你最终会以(名字像'family's'),这显然无法工作。
另一方面,如果您使用predicateWithFormat:
,则可以让它自己处理它。它会逃脱你的特殊字符。
如果你不想/不能够使用predicateWithFormat
,那么你可以简单地替换字符串中的任何撇号。
我做我的应用程序,检查我的UISearchBar
控制的时候,要看到,如果用户试图寻找特定CoreData记录:
NSString* searchString = self.searchBar.text;
if (searchString.length != 0)
{
searchString = [searchString stringByReplacingOccurrencesOfString:@"'" withString:@"\\'"];
NSString* filter = [NSString stringWithFormat:@"companyName CONTAINS[cd] '%@'", searchString];
NSPredicate* predicate1 = [NSPredicate predicateWithFormat:filter];
// ...etc...
}
(这是我使用的通用功能的简化版本,它实际上使用可变数量的过滤器字符串搜索CoreData,这就是为什么我不直接使用predicateWithFormat
。)
我的回答对你有帮助吗? – NSAddict
哎呀,对不起,我忘了接受它,非常感谢你 - 这是一个很大的帮助! – Devfly
没问题,谢谢:) – NSAddict