【问题标题】:NSPredicate Filtering with special characters带有特殊字符的 NSPredicate 过滤
【发布时间】: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 中不允许使用特殊字符,或者我应该以不同的方式格式化谓词。

【问题讨论】:

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

标签: iphone ios cocoa-touch cocoa 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
  • 您找到解决方案了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-24
  • 2019-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多