我遇到了涉及Firebase用户displayName值的错误。这是我的代码:
if let user = user {
if user.displayName == nil || user.displayName == "" {
self.performSegue(withIdentifier: "AddName", sender: nil)
} else {
let displayName = user.displayName!.replacingOccurrences(of: " ", with: "_")
if let fcmToken = UserDefaults.standard.object(forKey: "firToken") as? String {
if !fcmToken.isEmpty {
ref.child("cities").child(driversCurrentCity).child("loggedInDrivers").child(displayName).child("fcmToken").setValue(fcmToken)
ref.child("cities").child(driversCurrentCity).child("loggedInDrivers").child("fcmTokens").child(fcmToken).setValue(true)
ref.child("users").child((FIRAuth.auth()?.currentUser?.uid)!).child("fcmToken").setValue(fcmToken)
UserDefaults.standard.set(true, forKey: "loginCompleted")
self.performSegue(withIdentifier: "LoggedInSuccess", sender: nil)
}
}
}
这是我用来设置displayName的代码:
我在Firebase中使用此功能来设置displayName:
let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.displayName = displayName
changeRequest?.commitChanges { (error) in
// ...
}
对于某些用户来说,一切正常。但是,有些用户遇到了崩溃
ref.child("cities").child(driversCurrentCity).child("loggedInDrivers").child(displayName).child("fcmToken").setValue(fcmToken)
我收到此错误: 致命异常:InvalidPathValidation (child :)必须是非空字符串且不包含'。' '#' ' $' ' ['或者']'
我最近还没能复制它,但是当我 首先开始调试显示displayName是涉及gestureRecognizer的长字符串的问题。按下登录按钮时的某些代码似乎应用于displayName变量。我知道这个问题有点模糊,但我感谢任何帮助!