Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 按对象唯一id筛选_Ios_Swift - Fatal编程技术网

Ios 按对象唯一id筛选

Ios 按对象唯一id筛选,ios,swift,Ios,Swift,好的,在我的应用程序中,有人正在参加一个活动。在参加活动的人中,有些人可能在我的朋友名单上。每个用户都有一个唯一的用户id来标识他们。我试图用一种快速的方式做事情,并使用过滤功能,但我有一点小麻烦。我试图弄清楚如何筛选出那些参加活动的非我朋友的用户,这样我就只能得到一份参加活动的朋友的名单 @objc func filterUsers(){ UserService.following { (friends) in guard let users =

好的,在我的应用程序中,有人正在参加一个活动。在参加活动的人中,有些人可能在我的朋友名单上。每个用户都有一个唯一的用户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对两者进行比较?如果没有,谁能帮我用一些语法来解决这个问题。

使用
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})
}