【问题标题】:NSPredicate Exact Match with StringNSPredicate 与字符串完全匹配
【发布时间】:2016-04-27 07:38:15
【问题描述】:

你好,我正在快速开发。我需要知道如何找到与确切字符串匹配的结果。这是我的代码

let userID: String = String(sender.tag)
        // Create a Predicate with mapping to trip_id
        let filterByRequest: NSPredicate = NSPredicate(format: "%K.%K CONTAINS[c] %@", "ProductRequest", "user_id", userID)
        // Filter your main array with predicate, resulting array will have filtered objects
        let filteredArray: [AnyObject] = self.array.filteredArrayUsingPredicate(filterByRequest)

问题是如果用户 id 为 69,它会显示 id 为 69、6 和 9 的用户的结果。

我用谷歌搜索,但我发现一些答案与我的问题无关,但它们都在客观 C 中。

【问题讨论】:

  • 因为您使用的是 CONTAINS[c] .. 表示如果该字段中有任何字符,您就知道了
  • 是的,那我应该用什么?@EICaptain

标签: ios swift nspredicate


【解决方案1】:

在谓词中使用 MATCHES 如下:

let filterByRequest: NSPredicate = NSPredicate(format: "%K.%K MATCHES %@", "ProductRequest", "user_id", userID)

希望对你有帮助..

【讨论】:

  • "MATCHES" 进行正则表达式匹配。如果搜索字符串包含任何正则表达式特殊字符,这将不起作用。
【解决方案2】:

要测试完全相等,只需使用== 而不是CONTAINS:

NSPredicate(format: "%K.%K == %@", ...)

这也可以与[c] 组合以实现不区分大小写的相等:

NSPredicate(format: "%K.%K ==[c] %@", ...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 2016-11-24
    • 2014-07-14
    相关资源
    最近更新 更多