用户使用直接保存到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
}
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)"
}