使用NSPredicate过滤数组数组以查看它是否包含Swift中的整数

时间:2017-05-31 09:41:00

标签: ios swift nspredicate

您好我正在努力学习更多关于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)

1 个答案:

答案 0 :(得分:2)

您可以使用ANY将每个嵌套数组与NSPredicate进行比较。

let malePred = NSPredicate(format: "ANY self == 9")