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 与字符串完全匹配的主要内容,如果未能解决你的问题,请参考以下文章