Firebase iOS - 在调用 observeSingleOfEventType 时保证 FDataSnapshot

Firebase iOS - guarantees on FDataSnapshot when calling observeSingleOfEventType

我想澄清 Firebase 对从 observeSingleEventOfType 返回的 FDataSnapshot 的保证。特别是,the iOS docs state:

Value events are always triggered last and are guaranteed to contain updates from any other events which occurred before that snapshot was taken.

这是否也保证不包括在调用 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 之前发生的更新?

调用setValue()不是事件;你在这里很困惑。事件是您可以传递给 observe[Single]Event*() 的东西,它们是 enumerated here

Firebase 不是同步的,它不会等待您的写入完成。但是,如果您监听 valueChildAddedobserveSingleEventOfType(),那么 "snapshot" 中的所有子键都已经触发了 ChildAdded 事件。

如果要等待写入完成,使用withCompletionBlock:

[ref setValue:@"I'm writing data" withCompletionBlock:^(NSError *error, Firebase *ref) {
    // start your listeners here
}];