我想澄清一下Firebase对observeSingleEventOfType返回的FDataSnapshot的保证。特别是the iOS docs state:
值事件始终在最后触发,并保证包含 来自该快照之前发生的任何其他事件的更新 服用。
这是否也保证调用observeSingleEventOfType后发生的更新不包括在内?
例如,在以下代码中:
Firebase *ref = [[Firebase alloc] initWithUrl:@"someUrl"];
[ref setValue:@{@"someKey1" : @"someValue1"}];
[ref observeSingleEventOfType:FEventTypeValue
withBlock:^(FDataSnapshot *snapshot) {
// is it ever possible that snapshot will contain someKey2?
}
[ref setValue:@{@"someKey2" : @"someValue2"}];
我想知道快照是否可能包含" someKey2,"或者快照是否仅包括在调用observeSingleEventOfType之前发生的更新?
答案 0 :(得分:1)
调用setValue()
不是一个事件;你在这里很困惑。您可以将事件传递到observe[Single]Event*()
,它们是enumerated here。
Firebase不是同步的,它不会等待你的写完成。但是,如果您收听ChildAdded
的{{1}}和observeSingleEventOfType()
,那么"快照"中的所有子键。将会触发value
个事件。
如果您想等待写入完成,请使用ChildAdded
:
withCompletionBlock