我正在使用以下内容:
Firebase *fb =[[Firebase alloc] initWithUrl:url];
[fb setValue:d withCompletionBlock:^(NSError *error, Firebase *ref) {
if (error) {
// bad news
} else {
}
}];
如果您有连接,这似乎工作得很好,如果没有,似乎永远不会调用回调。如果是这种情况,我是否需要将整个内容包装在 connectedRef
中?似乎有很多额外的工作,当我猜想完成 block 只会失败并显示错误状态为不在线时。
还有其他人遇到这个问题吗?
最佳答案
Firebase 背后的理念是为您同步数据。它不仅仅是一个简单的请求/响应系统。因此,如果您在离线时执行 setValue,Firebase 将保留该数据,直到您 在线,然后它会在那时执行 setValue(然后调用完成 block )。
所以您看到的行为是预料之中的。如果您只想在在线时执行 setValue,那么是的,您需要使用 .info/connected 观察器。但是,如果您在尝试执行 setValue 或类似操作时离线,您仍然可能会遇到问题。一般来说,最好只执行 setValue 并让 Firebase 为您处理。
关于ios - 如果没有连接,则不会调用 Firebase withCompletionBlock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20453501/