带有特殊字符的 NSPredicate 过滤

Posted

技术标签:

【中文标题】带有特殊字符的 NSPredicate 过滤【英文标题】:NSPredicate Filtering with special characters 【发布时间】:2012-04-17 06:11:44 【问题描述】:

我正在使用下面的代码使用谓词过滤数组。

self.aPredicateString = [self.aPredicateString stringByAppendingString:[NSString stringWithFormat:@"%@ contains[cd] '%@'", self.selectedSearchParameter, self.searchString]];


NSLog(@"Predicate string %@",self.aPredicateString);
        self.aPredicate = [NSPredicate predicateWithFormat:self.aPredicateString];

如果用户输入\',代码会崩溃并出现错误。

我不明白错误是什么? NSPredicate 中不允许使用特殊字符,或者我应该以不同的方式格式化谓词。

【问题讨论】:

我认为你不应该在 %@ 周围加上单引号,因为这会把它变成文字 能否提供崩溃报告? 【参考方案1】:

我想知道,为什么你使用所有这些self.aPredicateString stringByAppendingString,但我认为,你的谓词应该是这样的:

self.aPredicate = [NSPredicate predicateWithFormat:@"%@ contains[cd] %@", self.selectedSearchParameter, self.searchString]]; 

%@ 周围没有 ''

【讨论】:

self.aPredicateString = [self.aPredicateString stringByAppendingString:[NSString stringWithFormat:@" AND %@ contains[cd] '%@'", self.selectedSearchParameter, self.searchString]];我使用的实际语句如下所示。我需要将字符串附加到现有字符串并形成谓词。在语句中的 AND 之前,我还使用了一个谓词条件。 我什至试过不加引号。即便如此,应用程序也会崩溃。@rdelmar 您找到解决方案了吗?

以上是关于带有特殊字符的 NSPredicate 过滤的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery DataTables 插件过滤带有特殊字符的结果?

NSPredicate 用于过滤对象的强项是 BEGINS WITH special characters

php文件字​​符编码、mysql数据库字符编码、特殊字符

常用正则表达式大全——包括校验数字字符特殊密码过滤

显示带有问号的菱形等特殊字符的网站

如何在批处理文件中获取带有特殊字符的子字符串?