Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iOS中处理Firebase数据库错误#AskFirebase_Ios_Swift_Firebase_Firebase Realtime Database - Fatal编程技术网

如何在iOS中处理Firebase数据库错误#AskFirebase

如何在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 }) 如何确

我需要以不同于所有其他错误的方式处理“权限被拒绝”错误

在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
})

如何确定错误类型?我已经阅读了整个文档,我认为
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吗?。如果是这样的话,您可以用它代替-3In
FIRAuthErrorCode
所有代码都从
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
        }
      })