UID равен нулю в базе данных - PullRequest
1 голос
/ 25 мая 2019

в моем AppDelegate.swift я добавил этот код, здесь if user!= nil определяет класс с именем UserService,

let authListener = Auth.auth().addStateDidChangeListener { (auth, user) in

        let storyboard = UIStoryboard(name: "Main", bundle: nil)

        if user != nil {
            UserService.observeUserProfile(user!.uid) { userProfile in
                UserService.currentUserProfile = userProfile
            }
            //

            let controller = storyboard.instantiateViewController(withIdentifier: "Home") as! UINavigationController
            self.window?.rootViewController = controller
            self.window?.makeKeyAndVisible()
        } else {

            UserService.currentUserProfile = nil

            // menu screen
            let controller = storyboard.instantiateViewController(withIdentifier: "SignIn") as! SignInViewController
            self.window?.rootViewController = controller
            self.window?.makeKeyAndVisible() 
        }
    }

в UserService ()

class UserService{
     static var currentUserProfile:User?

    static func observeUserProfile(_ uid:String, completion: @escaping ((_ user:User?)->())) {
        let userRef = Database.database().reference().child("users/profile/\(uid)")


        userRef.observe(.value, with: { snapshot in
            var user:User?

            if let dict = snapshot.value as? [String:Any],
                let username = dict["username"] as? String,
                let profileImage = dict["profileImage"] as? String,
                let url = URL(string:profileImage) {

                user = User(uid: snapshot.key, username: username, profileImage: url)
            }

            completion(user)
        })
    }
}

В моем profileViewController.swift мне нужно получить текущий идентификатор пользователя, Но всегда возвращайте ноль. Почему это так?

 guard let userProfile = UserService.currentUserProfile else { return
 }

Но я добавил вот так, я могу получить UID. Почему я не могу получить UID, используя UserService

  let userid: String = (Auth.auth().currentUser?.uid)!
 print(userid)

Ouput это: HwXwld5YoDO0YWm6EDvtTRgl7gG3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...