2012-04-17 60 views
1

我正在使用下面的代码来使用谓词筛选数组。NSPredicate使用特殊字符筛选

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中不允许使用特殊字符,还是应该以不同的方式格式化谓词。

+0

没有''我不认为你应该有围绕%@的单引号,因为它会将其变成文字 – rdelmar 2012-04-17 06:21:45

+0

您能否提供崩溃报告? – 2012-04-18 06:35:40

回答

6

我想知道,你为什么用这一切self.aPredicateString stringByAppendingString,但我认为,你的谓语应该是这样的:

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

与各地%@

+0

self.aPredicateString = [self.aPredicateString stringByAppendingString:[NSString stringWithFormat:@“AND%@ contains [cd]'%@'”,self.selectedSearchParameter,self.searchString]];我正在使用的实际陈述如下所示。我需要将字符串附加到现有的字符串并形成谓词。在声明之前的AND中,还有一个谓词条件是我正在使用的。 – steja 2012-04-17 12:47:41

+1

我甚至试过没有引号。即使是这样,应用程序崩溃了。@ rdelmar – steja 2012-04-17 12:49:09

+0

您是否找到了解决方案? – Chuck 2017-08-22 11:38:58