具有聚合运算符的数组过滤器
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) } )
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) } )