【问题标题】:Swift -how to handle Firebase Database Error CodesSwift - 如何处理 Firebase 数据库错误代码
【发布时间】:2020-10-24 20:51:25
【问题描述】:

FIRAuthErrorCode/AuthErrorCode 处理Authentication 错误。

FIRStorageErrorCode/StorageErrorCode 处理Storage 错误。

我查看了文档,但找不到任何关于 Database 错误的内容。有什么存在吗?一个链接或一个例子会很有帮助。

【问题讨论】:

    标签: ios swift firebase firebase-realtime-database


    【解决方案1】:

    似乎没有什么需要处理的,比如存储和身份验证,因为我可以处理的唯一错误是 code=1。

    我假设您的意思是对以下内容的错误处理:

    Database.database().reference().child("RootValue")
        .setValue("Some String") 
    { (err, ref) in 
        //Handle error here
    }
    

    我可以得到错误显示的唯一方法是当数据库规则为写入时只允许在经过身份验证时返回错误:

    Error 
    Domain=com.firebase
    Code=1 
    "Permission denied"
    UserInfo={ NSLocalizedDescription=Permission denied }
    

    我尝试断开与互联网的连接,但这只是在一段时间后向控制台输出错误。从未调用完成闭包。

    我也尝试为数据库设置一个非法值,但这也不会调用闭包并出现错误。相反,它会引发异常并使应用程序崩溃,这似乎不合适。

    Database.database().reference().child("RootValue").setValue(Data())
    

    抛出异常

    An uncaught exception was raised
    2020-10-25 00:14:44.338071-0400 [General] (setValue:withCompletionBlock:) Cannot store object of type _NSZeroData at . Can only store objects of type NSNumber, NSString, NSDictionary, and NSArray.
    

    我找到了一个constants file,如果您正在寻找它,它可能有助于解决事务写入错误。我已经包含了文件的底部,这似乎是最有用的部分。

    #pragma mark -
    #pragma mark Error handling constants
    
    NSString *const kFErrorDomain = @"com.firebase";
    NSUInteger const kFAuthError = 1;
    NSString *const kFErrorWriteCanceled = @"write_canceled";
    
    #pragma mark -
    #pragma mark Validation Constants
    
    NSUInteger const kFirebaseMaxObjectDepth = 1000;
    const unsigned int kFirebaseMaxLeafSize = 1024 * 1024 * 10; // 10 MB
    
    #pragma mark -
    #pragma mark Transaction Constants
    
    NSUInteger const kFTransactionMaxRetries = 25;
    NSString *const kFTransactionTooManyRetries = @"maxretry";
    NSString *const kFTransactionNoData = @"nodata";
    NSString *const kFTransactionSet = @"set";
    NSString *const kFTransactionDisconnect = @"disconnect";
    

    【讨论】:

      猜你喜欢
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 2021-04-08
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      • 2014-12-05
      相关资源
      最近更新 更多