我希望通过swift3.0的NSPredicate进行数组过滤器阵列

时间:2016-12-14 04:35:10

标签: arrays swift3 nspredicateeditor

我现在有需要,这个要求是在NSPredicate的另一个数组过滤器中使用数据数组。在Object-C中,它的工作原理如下:

NSArray * arr1 = @[@1,@2,@3]; 

NSArray * arr2 = @[@2,@3,@4,@5];

NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@"NOT (SELF IN %@)",arr1]; 

NSArray * filter = [arr2 filteredArrayUsingPredicate:filterPredicate]; 

通过这种方法,我可以得到过滤器,这个数组中的元素不包含在arr1.But我在Swift 3.0上找不到相关的方法。如果我能得到所有帮助,我将非常感激

1 个答案:

答案 0 :(得分:3)

为此,您只需使用filter即可,无需使用NSPredicate

let array1 = [1,2,3]
let array2 = [2,3,4,5]
let filterArray = array2.filter { !array1.contains($0) }
print(filterArray) // [4, 5]

修改:@Alexander建议使用set array1进行击球。

let array1 = [1,2,3,2,3]
let set = Set(array1)
let array2 = [2,3,4,5]
let filterArray = array2.filter { !set.contains($0) }
print(filterArray)