【发布时间】:2020-11-25 03:13:37
【问题描述】:
我有一个与 tinder 非常相似的 viewController。用户可以根据 Firebase 中存储的值的数量向左或向右滑动。 firebase 中的每个值都会显示在用户 VC 上,无论它是否符合他们的偏好。我想让用户有偏好(再次,非常类似于 tinder。)并且只有在这些限制范围内的值才能显示在 viewController 上。我从 firebase 获取所有值的方式是
func fetchPost() {
topCardView = nil
var previousCardView: CardView?
Database.database().reference().child("Post").observe(.childAdded, with: { (snapshot) in
if let userDictionary = snapshot.value as? [String: AnyObject] {
let poster = Poster(dictionary: userDictionary as [String : AnyObject])
let cardView = self.setupCardFromUser(poster: poster)
self.cardViewModels.append(poster.toCardViewModel())
if let currentUser = Auth.auth().currentUser?.uid,
currentUser == poster.fromId {
cardView.removeFromSuperview()
} else if self.topCardView == nil {
self.topCardView = cardView
}
previousCardView?.nextCardView = cardView
previousCardView = cardView
}
}, withCancel: nil)
}
上面的代码允许用户查看 firebase 中的每一个值。但我想要控制的偏好是成本和技能。
是否有一种简单的方法让我只显示来自 firebase 的值(如果它们与用户的偏好匹配)?
在 firebase 中,usersPreferences 树设置为
users
|______ usersUID
|______ minSeekingCost
|______ maxSeekingCost
|______ skills1
以及帖子的设置方式
post
|____ usersUID
|____ category
|____ cost
我希望用户找到在 min&maxSeekingCost 范围内的帖子,并匹配他们的技能。假设一个帖子与他们的一项技能相匹配,并且价格不在他们的限制范围内,那么它就不会被获取。如果帖子不匹配并且价格在他们的限制范围内,则相同。
我是否必须在 fetchPost 中获取用户偏好?或者我可以操纵 fetchPost 本身来调用这些。
【问题讨论】:
标签: ios firebase firebase-realtime-database