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

Sle*_*lee 6 ios firebase

我使用以下内容:

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

                }
            }];
Run Code Online (Sandbox Code Playgroud)

如果你有连接,这似乎工作得很好,如果不是,似乎永远不会调用回调.如果是这种情况,那么我是否需要将这整件包装成一个connectedRef?当我猜测完成块只是失败并且错误状态不在线时,似乎有很多额外的工作.

还有谁有相同的问题吗?

Mic*_*uer 8

Firebase背后的想法是为您同步数据.它不仅仅是一个简单的请求/响应系统.所以,如果你做的setValue而离线,火力地堡将保留的数据,直到你在网上,然后它会做当时的setValue(然后完成块将被调用).

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

  • 我们可能在谈论不同的事情.在set()调用中立即调用事件回调(即使用.on注册),但在set将其发送到服务器之前,不会调用set()onComplete回调.这应该在所有平台上保持一致. (2认同)