如何在iOS中处理Firebase数据库错误#AskFirebase
我需要以不同于所有其他错误的方式处理“权限被拒绝”错误 在Android中,我做到了:(Kotlin) 在iOS中,我只有:如何在iOS中处理Firebase数据库错误#AskFirebase,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,我需要以不同于所有其他错误的方式处理“权限被拒绝”错误 在Android中,我做到了:(Kotlin) 在iOS中,我只有: someDbReference.observe(.childAdded, with: { data in // Do something }, withCancel: { err in // err is Error print((err as NSError).code) // 1 // Which error? O_o }) 如何确
someDbReference.observe(.childAdded, with: { data in
// Do something
}, withCancel: { err in
// err is Error
print((err as NSError).code) // 1
// Which error? O_o
})
如何确定错误类型?我已经阅读了整个文档,我认为
err.localizedDescription==“Permission Denied”
是一种非常糟糕的方法。就像在评论中已经提到的那样,我使用相同的方法来确定Firebase返回的错误类型。例如:
someDbReference.observe(.childAdded, with: { data in
// Do something
}, withCancel: { (returnedError: Error) in
// Casting Error to NSError
let testError: NSError = searchError as NSError
// This is just random error from FB documentation, you can find all there
if testError.code == FIRAuthErrorCode.errorCodeUserDisabled.rawValue {
// User disabled
}
})
确保将返回的错误对象(错误类型)强制转换为NSError。使用其错误代码将其与Firebase错误代码进行比较。我想您可以看到
error.code
对于该特定错误是否是唯一的。然后检查特定代码是否正确present@kathayatnk“类型Error
的值没有成员code
”Hmmm。。。你确定err
是NSError
而不是Error
?@paper1111它是Error
,铸造到NSError
,但是Error。code
不等于-3
它总是打印1吗?。如果是这样的话,您可以用它代替-3InFIRAuthErrorCode
所有代码都从17000
开始,但我收到的代码1
,这将永远不起作用。但它看起来像Firebase bug,因为我应该收到代码-3
以获得权限Deniedo您是对的。我忘记了——我正在用自定义错误类处理错误,因为我在应用程序中使用的语言很少,需要本地化。因此,该错误位于默认开关情况下,并用作一般错误消息。如果你发现任何新的东西,我会继续访问你的帖子,希望你能想出一些办法。我希望来自#askfirebase或@FrankvanPuffelen的人会回答=)FIRAuthErrorCode
仅用于验证错误。我还没有找到找到数据库错误代码的方法,我正在寻找同样的东西。
someDbReference.observe(.childAdded, with: { data in
// Do something
}, withCancel: { (returnedError: Error) in
// Casting Error to NSError
let testError: NSError = searchError as NSError
// This is just random error from FB documentation, you can find all there
if testError.code == FIRAuthErrorCode.errorCodeUserDisabled.rawValue {
// User disabled
}
})