NSPredicate 与字符串完全匹配

Posted

技术标签:

【中文标题】NSPredicate 与字符串完全匹配【英文标题】:NSPredicate Exact Match with String 【发布时间】: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 【参考方案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] %@", ...)

【讨论】:

以上是关于NSPredicate 与字符串完全匹配的主要内容,如果未能解决你的问题,请参考以下文章

将 NSPredicate 与字符串匹配

NSPredicate:与日期iOS的to-Many关系

NSPredicate 匹配“NSDatabase 中的任何条目与包含字符串的值”

NSPredicate 使用 OR 错误

NSPredicate 匹配反斜杠

CoreData:NSPredicate 按日期过滤