Модель данных возвращает nil

swift

#1

Добрый день, всем
Я получаю данные из 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
    }
    
}

#2

очевидно, что у вас проваливается инициализатор. Если name есть, значит с мейлом проблема.


#3

Спасибо. Разобрался. Убрать константу из guard