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

Filtering with NSPredicate an Array of Array to see if It contains an Integer in Swift

您好,我正在努力学习更多关于 NSPredicate 的知识——这非常困难,因为资源仍然基于 ObjC。如果可能的话,我想要一个基于 swift 的答案

基本上我正在尝试使用 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{[=12=].contains(9)}
print(result)
var resultFemale = people.filter{[=12=].contains(10)}
print(resultFemale)

但是我如何使用谓词做类似的事情?

下面不起作用 - resultMale 只是 returns 一个空白数组,而它应该包含两个数组:[maleperson1, maleperson2]。我认为问题在于它检查 'people' 数组中是否包含 9 而不是检查所包含数组的内容。

知道如何使用 NSPredicate 来过滤数组中的整数吗?

let malePred = NSPredicate(format: "9 IN %@",people) 
//9 is the code for Male user
var resultMale = (people as NSArray).filtered(using: malePred)

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

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