我现在有需要,这个要求是在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上找不到相关的方法。如果我能得到所有帮助,我将非常感激
答案 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)