Как получить доступ к первому пользователю в массиве - PullRequest
0 голосов
/ 12 февраля 2019

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

Моя пользовательская модель: Извините за некоторые немецкие слова

class UserModel {

var username: String?
var email: String?
var profilImageUrl: String
var birthdayDate: String?
var gender: String?
var userDescription: String?


init(dictionary: [String: Any]) {
    username = dictionary["username"] as? String
    email = dictionary["email"] as? String
    profilImageUrl = dictionary["profilImageURL"] as? String ?? ""
    birthdayDate = dictionary["Geburtsdatum"] as? String
    gender = dictionary["gender"] as? String
    userDescription = dictionary["description"] as? String
}

В следующем яСохранение загруженных данных в массив "участники". Изображение первого пользователя в этом массиве должно быть показано в firstUserImageView.

import SDWebImage
var attendees = [UserModel]()
@IBOutlet weak var firstUserImageView: UIImageView!

// загрузка участников с помощью Api ->, который работает.print (accedees.count) дает мне количество участников, сохраненных в базе данных

func loadAttendees(){
    guard let eventID = event?.id else {return}

    AttendeeApi.shared.observeEventAttendee(eventID: eventID) { (attendeeId) in
        AttendeeApi.shared.observeAttendee(attendeeId: attendeeId, completion: { (attendee) in
            self.attendees.append(attendee)
        })
    }
}

Настройка представления изображения

var attendee: UserModel?{
    didSet {
        let firstAttendee = attendees[0].profilImageUrl
        guard let firstUserImageUrl = URL(string: firstAttendee) else {return}
        firstUserImageView.sd_setImage(with: firstUserImageUrl) { (_, _, _, _) in
        }
    }
}

loadAttendees вызывается в viewDidLoad, но ImageView не отображаетсякартинка первого пользователя.

var REF_ATTENDEE = Database.database().reference().child("users")


func observeAttendee (attendeeId: String, completion: @escaping (UserModel) -> Void) {
    REF_ATTENDEE.child(attendeeId).observeSingleEvent(of: .value) { (snapshot) in
        guard let dic = snapshot.value as? [String: Any] else {return}
        let newAttendee = UserModel(dictionary: dic)
        completion(newAttendee)
    }
}

var REF_EVENTS_ATTENDEES = Database.database().reference().child("events - attendees")

func observeEventAttendee(eventID: String, completion: @escaping (String) -> Void) {
    REF_EVENTS_ATTENDEES.child(eventID).observe(.childAdded) { (snapshot) in
        let attendeeId = snapshot.key
        completion(attendeeId)

    }
}
...