如何根据多个条件创建Swift过滤器查询?

时间:2018-06-18 05:47:24

标签: arrays swift filtering

我目前正在记录User的发现偏好(请参见下图),并希望过滤Users中符合发现偏好设置的CollectionView列表由User

enter image description here

数组中的每个User都有birthYeargenderdiscoverable Bool

这是我的功能,目前仅适用于discoverable Bool,仅显示设置为true的用户。

如何链接我需要的过滤条件,以便仅显示符合上述用户发现首选项的用户?

    func discoverUsers(location: CLLocation) {

        DataService.run.getUsersAtVenue(forVenueLocation: location, forUid: (Auth.auth().currentUser?.uid)!) { (users, success) in

            if success {
                self.users = users

                self.filteredUsers = self.users.filter({ (user: User) -> Bool in
                    return user.discoverable == true

                    //-> Chain filter conditions to check for here: gender, age
                })

                self.collectionView.reloadData()
                Utilities.run.dismissSVHUD(delay: 0.5)

            }//end if

        }//end closure

    }//end func


}//end class

1 个答案:

答案 0 :(得分:1)

我很难准确理解你想要达到的目标。但是,以下是滤镜功能的用法:

鉴于users是一个类型为:

的元素数组
struct User {
    let age: Int
    let isMale: Bool
    // ...
}

你可以这样过滤:

filteredUsers = users.filter { user in
     return (user.age <= maxAge && user.age >= minAge) && /* include any other condition you need */ 
}