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 不是同步的,它不会等待您的写入完成。但是,如果您监听 value
的 ChildAdded
和 observeSingleEventOfType()
,那么 "snapshot" 中的所有子键都已经触发了 ChildAdded
事件。
如果要等待写入完成,使用withCompletionBlock
:
[ref setValue:@"I'm writing data" withCompletionBlock:^(NSError *error, Firebase *ref) {
// start your listeners here
}];
我想澄清 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 不是同步的,它不会等待您的写入完成。但是,如果您监听 value
的 ChildAdded
和 observeSingleEventOfType()
,那么 "snapshot" 中的所有子键都已经触发了 ChildAdded
事件。
如果要等待写入完成,使用withCompletionBlock
:
[ref setValue:@"I'm writing data" withCompletionBlock:^(NSError *error, Firebase *ref) {
// start your listeners here
}];