Cocoa touch 当查询包含撇号时,NSFetchRequest激发NSInvalidArgumentException

Cocoa touch 当查询包含撇号时,NSFetchRequest激发NSInvalidArgumentException,cocoa-touch,core-data,nsfetchrequest,Cocoa Touch,Core Data,Nsfetchrequest,创建包含撇号的查询时,出现错误: 'NSInvalidArgumentException',原因:'无法分析格式 字符串“SELF.sale.ID==0和((SELF.dam包含[cd]'Michael's')或 (SELF.name包含[cd]“Michael's”)或(SELF.purchaserLocation) 包含[cd]“Michael的”)或(SELF.purchaserName包含[cd] “Michael’s”)或(SELF.sire包含[cd]“Michael’s”)或(SE

创建包含撇号的查询时,出现错误:

'NSInvalidArgumentException',原因:'无法分析格式 字符串“SELF.sale.ID==0和((SELF.dam包含[cd]'Michael's')或 (SELF.name包含[cd]“Michael's”)或(SELF.purchaserLocation) 包含[cd]“Michael的”)或(SELF.purchaserName包含[cd] “Michael’s”)或(SELF.sire包含[cd]“Michael’s”)或(SELF.vendor) 包含[cd]“迈克尔的”)“

我试着用两个撇号来代替一个撇号,但还是犯了同样的错误。 当查询不包含撇号时,一切正常。
谢谢我的不好,我必须用转义字符串\'替换单撇号。

实际上,这里是真正的解决方案:


您需要放置2,因为
\
是一个字符,因此需要转义到。

如果在使用[NSPredicate predicateWithFormat]时将格式字符串中的格式占位符用单引号括起来,则会发生这种情况。不需要这些引语

错误的例子:

NSPredicate *myPred = [NSPredicate predicateWithFormat:@"name = '%@'";
正确的例子:

NSPredicate *myPred = [NSPredicate predicateWithFormat:@"name = %@";

在构建
NSPredicate
的地方张贴代码。必须用转义撇号替换撇号