Swift:正确的Firebase错误处理

时间:2017-09-13 19:37:01

标签: swift firebase error-handling firebase-realtime-database firebase-authentication

我无法理解为什么在运行以下代码时没有执行任何打印行:

ref.child("schools/\(schoolTextField.text!)/settings/pin").observeSingleEvent(of: .value, with: { (snapshot) in
    print(snapshot.value)
}, withCancel: { (error) in
    print(error.localizedDescription)
})

它曾经工作,直到我对firebase身份验证做了一些更改,但我不明白为什么withCancel块没有被执行!

如何识别此处发生的错误?日志中不会打印错误消息。

修改 我发现了类似的问题here,这表明问题可能与身份验证有关。在appDelegate的{​​{1}}中,我检查Firebase身份验证中是否存在用户身份验证令牌:

didFinishLaunchingWithOptions

在目前的情况下,有一个错误,打印出来:

Auth.auth().currentUser?.getIDTokenForcingRefresh(true, completion: { (response, error) in guard error == nil, let uid = response else { print(error) return } ... })

我现在也在日志中打印出这些错误:

Error Domain=FIRAuthErrorDomain Code=17011 "There is no user record corresponding to this identifier. The user may have been deleted."

1 个答案:

答案 0 :(得分:0)

尝试这种方式:

if let snapshot = snapshot.children.allObjects as? [DataSnapshot] {
 for snap in snapshots {

  print("SNAP: \(snap)")

}

此外,错误代码 17011 是用户未找到错误,请参阅FIRAuthErrorCode了解更多信息,您还可以创建一个Dataservice类来处理与firebase的交互。 {3}}了解更多信息。