如何更新用户个人资料

问题描述 投票:0回答:1

用户使用直接保存到firebase数据库中的userID(DisplayName)进行注册,但用户信息未出现在更新的用户配置文件屏幕上。如何在不收到此错误的情况下从firebase数据库中提取当前用户信息(例如用户名)以更新到用户个人资料?

*由于未捕获的异常'InvalidFirebaseData'而终止应用程序,原因:'(updateChildValues:withCompletionBlock :)无法存储对象的UILabel类型。只能存储NSNumber类型的对象,NSString,NSDictionary和NSArray。”*第一个引发调用堆栈:

         Auth.auth().addStateDidChangeListener { auth, user in
        if Auth.auth().currentUser != nil {
             guard  let uid = Auth.auth().currentUser?.uid else {
                 return }
        let user = Auth.auth().currentUser
        if let user = user {
          let uid = user.displayName
            let Profilephoto = self.ProfileImage

          }
            self.DisplayName.text = user?.displayName
            let values = ["username": self.DisplayName as Any] as [String:Any] //Add whatever you want

             Database.database().reference().child("users").child(uid).updateChildValues(values, withCompletionBlock: { (error, ref) in
                     if error != nil{
                         print(error?.localizedDescription as Any)
                         return
                     } else {
                           //Do whatever you want




   let DisplayName = user?.displayName
let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.displayName = DisplayName
changeRequest?.commitChanges { (error) in

}
ios swift firebase user-input
1个回答
0
投票
let ref = Database.database().reference()

guard let userID = Auth.auth().currentUser?.uid
        else
    {
        return
    }

    ref.child("users").child(userID).child("username").observe(.value)
    {
        (snapshot)
        in
        guard let name = snapshot.value as? String else
        {
            return
        }
        self.DisplayName.text = "\(username)"
    }
© www.soinside.com 2019 - 2024. All rights reserved.