Swift:如果删除了孩子的观察者,则不会调用Firebase身份验证观察者

时间:2016-02-13 08:52:17

标签: ios iphone swift authentication firebase

假设ref = Firebase(url: "your firebase url") 参考的孩子将是childRef = ref.childByAppendingPath("child")

如果我ref.observeAuthEventWithBlock在ref上侦听身份验证更改,然后我使用childRef.removeAllObservers(),则ref上的auth观察者不再侦听更改。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

我精心设计了一个小应用来复制问题(ObjC代码可以跟随)

要监视身份验证的代码是:

[myRootRef observeAuthEventWithBlock:^(FAuthData *authData) {
    NSLog(@"got an auth event");
}];

我们有子节点

child = [myRootRef childByAppendingPath:@"child_path"];

然后初始身份验证

[myRootRef authUser:@"dude@thing.com" password:@"pw" withCompletionBlock:^(NSError *error, FAuthData *authData) {

        NSLog(@"authentication 1 success");
        [child removeAllObservers];
        [self doAuth];
    } 
}];

doAuth方法只是auth的另一个用户并输出'authentication 2 success'

got an auth event
got an auth event
authentication 1 success
authentication 2 success

因为你可以看到它像宣传的那样有效 - 我无法复制这个问题。我的猜测是错误可能在你的代码中的其他地方。