Добрый день, всем
Я получаю данные из firebase database, через guard пытаюсь скастить их до [String: Any] и затем положить в модель. Но после обращения к экземпляру модели получают nil. Что я делают не так?
Метод:
private func fetchUserData() {
if Auth.auth().currentUser != nil {
guard let uid = Auth.auth().currentUser?.uid else { return }
Database.database().reference()
.child("users")
.child(uid).observeSingleEvent(of: .value) { (snapshot) in
guard let userData = snapshot.value as? [String: Any] else { return }
let currentFBUser = CurrentFBUser(uid: uid, userData: userData)
self.activityIndicator.stopAnimating()
self.profileName.isHidden = false
self.profileName.text = userData["name"] as? String
print(userData["name"] ?? nil) // return Optional(Polina Lorep)
print(currentFBUser?.name ?? nil) // return nil
} withCancel: { (error) in
print(error)
}
}
}
Модель:
struct CurrentFBUser {
var uid: String
var name: String
var email: String
init?(uid: String, userData: [String: Any]) {
guard
let name = userData["name"] as? String,
let email = userData["email"] as? String
else { return nil }
self.uid = uid
self.name = name
self.email = email
}
}