您好我正在努力学习更多关于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)
答案 0 :(得分:2)
您可以使用ANY
将每个嵌套数组与NSPredicate
进行比较。
let malePred = NSPredicate(format: "ANY self == 9")