具有聚合运算符的数组过滤器

Array filter with aggregate operators

array.filtered 不再存在于 Swift 中,我正在寻找一种在 array.filter 闭包中使用 'IN' 运算符的方法,就像我在 NSPredicate 中使用它一样.

之前查询是这样的

let predicate = NSPredicate(format: "(user in %@)", overallUsers)
tasksArray.filtered(using: predicate)

现在这不能与 swift4 一起使用,那么如何使用 array.filter{} 实现相同的效果?我试过这样的东西

tasksArray.filter{[=11=].user in overallUsers}

这失败并出现错误 'Cannot convert value of type '@lvalue User' to closure result type 'Bool''。这应该如何实际完成?

而不是 tasksArray.filter{[=11=].user in overallUsers} 你需要这样的东西:

tasksArray.filter { task in
    overallUsers.contains(task.user)
}

要求:User必须符合Equatable

你可以这样查看。

taskArray.filter( { overallUsers.contains([=10=].user) } )