Firebase用户显示名称导致崩溃

时间:2018-03-15 22:46:38

标签: ios firebase firebase-realtime-database

我遇到了涉及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变量。我知道这个问题有点模糊,但我感谢任何帮助!

0 个答案:

没有答案