按对象唯一ID过滤

时间:2018-09-28 05:23:59

标签: ios swift

好的,所以在我的应用中,我有参加活动的人。在参加活动的那些人中,有些人可能在我的朋友名单上。每个用户都有一个唯一的用户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进行比较。如果不能,那么任何人都可以帮我解决一些语法问题。

1 个答案:

答案 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})
}