似乎没有什么需要处理的,比如存储和身份验证,因为我可以处理的唯一错误是 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";