带有特殊字符的 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 插件过滤带有特殊字符的结果?