Получение данных из firebase без вызова собственных данных - PullRequest
0 голосов
/ 29 мая 2020

У меня настроен тип тиндера, и я получаю всех пользователей, чтобы я мог пролистывать их карточки. все работает гладко, за исключением того факта, что это представление смахивания также вызывает данные от текущего пользователя, позволяя им перемещаться по себе. Этого не должно происходить.

Код, который я использую:

fun c fetchUser () {

     topCardView = nil
     var previousCardView: CardView?
    Database.database().reference().child("jobPost").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, однако также вызывает данные currentUsers.

Я подумал, что, возможно, если бы использовать

  let currentUser = Auth.auth().currentUser?.uid

   if currentUser == cardView {
     cardView?.removeFromSuperview()

    }

, я бы получил сообщение об ошибке

Двоичный оператор '==' не может быть применен операндам типа String? и 'CardView'

кто-нибудь знает быстрое исправление?

1 Ответ

1 голос
/ 29 мая 2020

Есть ли у cardView информация о пользователе? Может быть, вы можете добавить поле userID в представление карты? если возможно, вы сможете сделать что-то вроде этого

if let currentUser = Auth.auth().currentUser?.uid,
  let cardView = cardView,
  currentUser == cardView.userID {
  // put your code to ignore card
}

где userId - будет строковым типом

...