【问题标题】:How to create a Swift filter query based on multiple conditions?如何创建基于多个条件的 Swift 过滤器查询?
【发布时间】:2018-06-18 05:47:24
【问题描述】:

我目前正在记录User 的发现首选项(见下图),并希望过滤Users 的列表,该列表显示在CollectionView 中,满足User 设置的发现首选项。

数组中的每个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

【问题讨论】:

    标签: arrays swift filtering


    【解决方案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 */ 
    }
    

    【讨论】:

    • 是的,这确实有帮助...我还是个初学者,并没有意识到您可以按照您显示的方式简单地一个接一个地绑定过滤条件。
    • 好吧,我真的很高兴它有帮助!尝试自己做更多的研究,因为您获得了“如何在 swift 中使用过滤器功能”的专业知识,例如谷歌搜索或快速查看苹果关于 swift 的书就足以回答您的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 2022-07-21
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多