我目前正在记录User
的发现偏好(请参见下图),并希望过滤Users
中符合发现偏好设置的CollectionView
列表由User
。
数组中的每个User
都有birthYear
,gender
和discoverable
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
答案 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 */
}