我使用以下内容:
Firebase *fb =[[Firebase alloc] initWithUrl:url];
[fb setValue:d withCompletionBlock:^(NSError *error, Firebase *ref) {
if (error) {
// bad news
} else {
}
}];
如果没有连接,这似乎很有效,如果不是,似乎永远不会调用回调。如果是这种情况,我是否需要将这整件事包裹在connectedRef
中?当我猜测完成块只是失败并且错误状态不在线时,似乎有很多额外的工作。
其他人有这个问题吗?
答案 0 :(得分:8)
Firebase背后的理念是为您同步数据。它不仅仅是一个简单的请求/响应系统。因此,如果您在离线时执行setValue,Firebase将保留该数据,直到您 在线,然后它将在那时执行setValue(然后将调用完成块)。 / p>
所以你所看到的行为是预料之中的。如果你只想在线上做setValue,那么是的,你需要使用.info / connected观察者。但是,如果您在尝试执行setValue或其他内容时离线,那么您仍然会遇到问题。一般来说,最好只做setValue并让Firebase为你处理它。