【问题标题】:NSPredicate not working if search string contains left "(" and right ")" brackets如果搜索字符串包含左“(”和右“)”括号,NSPredicate 不起作用
【发布时间】:2015-12-09 06:42:08
【问题描述】:

我正在使用 NSPredicate 从 coredata 中搜索包含。 但有些记录包含左右括号。 示例

productName = "产品 (Product1)" 我尝试按 prodcuctName 过滤数据,然后得到 0 个结果。

   self.productName = @"Product (Product1)";
   [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"productName MATCHES[cd] \"%@\"",self.productName]];

请建议我解决这个问题。

提前致谢!

【问题讨论】:

  • 为什么要在格式字符串中为%@ 加上引号?
  • 没有引号也不起作用。
  • 没想到会这样。但是,如果它与带有这些引号的 any 搜索字符串一起使用,我会感到惊讶。
  • 无论如何,你必须将搜索字符串中的括号转义。
  • 现在解决了我的问题。 MATCHES 替换为 LIKE 关键字。因为现在不需要搜索结果 MATCHES。

标签: ios objective-c iphone core-data nspredicate


【解决方案1】:

我用 LIKE 替换了 MATCHES 关键字。

现在 NSPredicate 工作正常。 MATCHES 是根据 ICU v3 使用正则表达式比较左/右表达式(有关更多详细信息,请参阅Regular Expressions 的 ICU 用户指南)。

而 LIKE 只是与“==”进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多