【发布时间】:2017-05-31 09:40:59
【问题描述】:
您好,我正在尝试更多地了解 NSPredicate,因为资源仍然基于 ObjC,所以它非常困难。如果可能的话,我想要一个快速的答案
基本上我正在尝试使用 NSPredicate 来查看下面的数组是否包含男性用户的代码编号“9”。
因此,我想过滤下面的people 数组,只保留包含数字 9 的数组。
var malePerson1:[Int] = [1,4,5,6,11,9]
var malePerson2:[Int] = [3,5,6,7,12,9]
var femalePerson3:[Int] = [3,5,6,7,12,10]
var people = [malePerson1, malePerson2, femalePerson3]
我使用过滤器使解决方案工作正常(见下文)
//Solution working with Filter
// male gender search
var result = people.filter{$0.contains(9)}
print(result)
var resultFemale = people.filter{$0.contains(10)}
print(resultFemale)
但是我如何使用谓词做类似的事情呢?
下面不起作用 - resultMale 在它应该包含两个数组时只返回一个空白数组:[maleperson1, maleperson2]。我认为问题在于它检查 9 是否包含在“人员”数组中,而不是检查包含数组的内容。
任何想法如何使用 NSPredicate 过滤数组中的整数?
let malePred = NSPredicate(format: "9 IN %@",people)
//9 is the code for Male user
var resultMale = (people as NSArray).filtered(using: malePred)
【问题讨论】:
-
这不是重复的 - 潜在的解决方案是目标 C(和非常古老的语法)这些解决方案不适用于 Swift
-
谓词语法对于 Swift 和 Objective-C 是相同的。对于您的情况,无论您使用哪种语言,它都是“ANY self == value”。
标签: ios swift nspredicate