如何访问阵列中的第一个用户

时间:2019-02-12 20:17:52

标签: arrays swift firebase

我正在尝试从Firebase下载用户,并使用Usermodel将其保存在数组中。 到目前为止,下载工作正常,但是如何访问第一个用户并显示该用户的图片?

我的用户模型:对不起一些德语单词

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(attendees.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)

    }
}

0 个答案:

没有答案