如果没有连接,则不会调用Firebase withCompletionBlock

时间:2013-12-08 12:39:58

标签: ios firebase

我使用以下内容:

Firebase *fb =[[Firebase alloc] initWithUrl:url];
            [fb setValue:d withCompletionBlock:^(NSError *error, Firebase *ref) {
                if (error) {
                    // bad news
                } else {

                }
            }];

如果没有连接,这似乎很有效,如果不是,似乎永远不会调用回调。如果是这种情况,我是否需要将这整件事包裹在connectedRef中?当我猜测完成块只是失败并且错误状态不在线时,似乎有很多额外的工作。

其他人有这个问题吗?

1 个答案:

答案 0 :(得分:8)

Firebase背后的理念是为您同步数据。它不仅仅是一个简单的请求/响应系统。因此,如果您在离线时执行setValue,Firebase将保留该数据,直到您 在线,然后它将在那时执行setValue(然后将调用完成块)。 / p>

所以你所看到的行为是预料之中的。如果你只想在线上做setValue,那么是的,你需要使用.info / connected观察者。但是,如果您在尝试执行setValue或其他内容时离线,那么您仍然会遇到问题。一般来说,最好只做setValue并让Firebase为你处理它。