Извлечение пользовательских данных из базы данных Firebase и отображение в текстовых полях профиля пользователя. - PullRequest
1 голос
/ 27 июня 2019

Я хочу получить пользовательские данные из базы данных Firebase (такие как: имя пользователя, адрес электронной почты, возраст, пол, рост) и отобразить их в текстовых полях, расположенных в моем UserProfileViewController.Я успешно смог сохранить пользовательские данные в своей базе данных, когда пользователь регистрируется и создает профиль.Однако у меня возникают проблемы с получением этих данных из базы данных и их отображением в контроллере представления профиля пользователя.Как я смогу отобразить возраст пользователя в ageTextField, пол пользователя в гендерном тексте и т. Д.?

Я попытался создать словарь для значений (имя пользователя, адрес электронной почты, возраст, пол, рост и т. Д.) В CreateProfileViewController, но, похоже, он не работал, когда я пытался получить их в UserProfileViewController,Мне было интересно, может ли кто-нибудь помочь мне с этой проблемой?

Это часть моего CreateProfileViewController, который хранит данные пользователей в базе данных:


//reference database
var ref : DatabaseReference!
ref = Database.database().reference().child("users")

 func profile(){

//get data from the current user who signed up (their uid and email), so that the profile data can be stored under the same user) 

        let key = ref.childByAutoId().key 
        let email = Auth.auth().currentUser?.email 


let user = [
                    "id": key,
                    "email": email,
                    "age": ageTextField.text! as String,
                    "gender": genderTextField.text! as String,
            "weight": weightTextField.text! as String,
            "height": heightTextField.text! as String,
            "monthlyGoal": monthlyGoalTextField.text! as String
        ]

self.ref.child(key).setValue(user)

}

 @IBAction func submitProfile(_ sender: Any) {
        profile()
        self.performSegue(withIdentifier: "toSegue", sender: self)
        print("User profile created!")//this takes them to the home page view controller once they successfully sign up and create a profile.

    }

1 Ответ

1 голос
/ 27 июня 2019

Используйте uid в качестве ключа для хранения пользовательских данных. Используйте let key = Auth.auth().currentUser?.uid вместо let key = ref.childByAutoId().key

func profile() {
    guard let key = Auth.auth().currentUser?.uid else { return }
    let email = Auth.auth().currentUser?.email 
    let user = ["id": key,
                "email": email,
                "age": ageTextField.text! as String,
                "gender": genderTextField.text! as String,
                "weight": weightTextField.text! as String,
                "height": heightTextField.text! as String,
                "monthlyGoal": monthlyGoalTextField.text! as String]
    self.ref.child(key).setValue(user)
}

Получить информацию о пользователе из Firebase, используя currentUser?.uid

func getUserDetails() {
    guard let key = Auth.auth().currentUser?.uid else { return }
    self.ref.child(key).observeSingleEvent(of: .value, with: { (snapshot) in
        // Get user value
        let value = snapshot.value as? [String: Any]
        self.emailTextField.text = value?["email"] as? String
        // ...
    }) { (error) in
        print(error.localizedDescription)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...