Cocoa touch 当查询包含撇号时,NSFetchRequest激发NSInvalidArgumentException
创建包含撇号的查询时,出现错误: '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]“迈克尔的”)“ 我试着用两个撇号来代替一个撇号,但还是犯了同样的错误。 当查询不包含撇号时,一切正常。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
谢谢我的不好,我必须用转义字符串\'替换单撇号。实际上,这里是真正的解决方案:
您需要放置2,因为
\
是一个字符,因此需要转义到。如果在使用[NSPredicate predicateWithFormat]时将格式字符串中的格式占位符用单引号括起来,则会发生这种情况。不需要这些引语
错误的例子:
NSPredicate *myPred = [NSPredicate predicateWithFormat:@"name = '%@'";
正确的例子:
NSPredicate *myPred = [NSPredicate predicateWithFormat:@"name = %@";
在构建
NSPredicate
的地方张贴代码。必须用转义撇号替换撇号