array.filtered
在Swift中不再存在,我正在寻找一种在array.filter闭包中使用'IN'运算符的方法,就像我在NSPredicate中使用它的方法一样。
在查询之前类似
let predicate = NSPredicate(format: "(user in %@)", overallUsers)
tasksArray.filtered(using: predicate)
现在这不能与swift4一起使用,那么如何使用array.filter {}实现相同的目的?我尝试过这样的事情
tasksArray.filter{$0.user in overallUsers}
此操作失败,错误为“无法将类型'@lvalue User'的值转换为闭包结果类型'Bool'。该如何实际完成?
答案 0 :(得分:1)
您需要像这样的东西来代替tasksArray.filter{$0.user in overallUsers}
:
tasksArray.filter { task in
overallUsers.contains(task.user)
}
要求:User
必须符合Equatable
。
答案 1 :(得分:1)
您可以像这样检查它。
taskArray.filter( { overallUsers.contains($0.user) } )