好的,所以在我的应用中,我有参加活动的人。在参加活动的那些人中,有些人可能在我的朋友名单上。每个用户都有一个唯一的用户ID来标识他们。我试图快速地做事并使用过滤器功能,但我遇到了一些麻烦。我试图弄清楚如何过滤出不是我的朋友的参加活动的用户,以便仅获得我正在参加的朋友的列表。
@objc func filterUsers(){
UserService.following { (friends) in
guard let users = self.users else {
return
}
self.results = users.filter { friends.contains($0) }
}
}
这是我到目前为止所拥有的,它不会返回任何东西,因为如果您共同映射对象,则不会有任何相同。我最终想通过uid进行比较,因此,我想知道是否可以使用两个参数进行过滤,因此我可以仅使用速记$ 0.uid和$ 1.uid进行比较。如果不能,那么任何人都可以帮我解决一些语法问题。
答案 0 :(得分:0)
使用contains(where:)
代替contains(_:)
。这是一个示例:
struct User{
var uid : Int
}
let users = [User(uid:1),User(uid:2),User(uid:3),User(uid:4),User(uid:5)]
let friends = [users[0],users[2],users[4],User(uid: 6),User(uid: 7)]
let results = users.filter{ (user) -> Bool in
return friends.contains(where:{$0.uid == user.uid})
}