Firebase iOS快照值返回null

时间:2016-04-26 23:18:34

标签: ios objective-c firebase firebase-realtime-database

在我的Firebase iOS应用程序中,我有一个端点指向应用程序中名为“users”的用户,在此端点内,基本结构如下:

  • 用户:
    • 用户ID-1:
      • 用户名:“test”
      • 电子邮件:“test@test.com”
    • 等...

我现在遇到的问题(以前工作得非常好)是当我使用observeEventType或observeSingleEvent并尝试在路径中检索snapshot.value:“users / userid-#”时,它给我null,即使数据显示在我所在位置的仪表板上。

这种情况只发生在其中一个用户ID上。我可以成功检索所有其他用户的数据。由于数据实际显示在仪表板上,所以我不知道为什么在检索数据时我得到的是null而不是该位置显示的数据。

我使用的代码非常简单:

Firebase *testRef = [self.ref childByAppendingPath:@"users/userid-1"];
[testRef observeSingleEventOfType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot)     {
    NSLog(@"%@", snapshot.value);
}];

我得到的是null而不是数据

任何人对可能发生的事情都有任何想法?

谢谢!

3 个答案:

答案 0 :(得分:0)

首先确保您已通过身份验证。 如果您想让用户在未经过身份验证的情况下搜索该节点,请更新规则:true。

使用子函数更新firebaseReference不推荐使用的函数childByAppendingPath:

Firebase *testRef = [[self.ref child:@"users"] child:"userid-1"]; 
[testRef observeSingleEventOfType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot)     {
        NSLog(@"%@", snapshot.value); }];

就是这样。

答案 1 :(得分:0)

适用于最新的Firebase SDK

将firebase引用创建为:

<script>

并将你的观察者称为:

@property (strong, nonatomic) FIRDatabaseReference *dataRef;

它对我有用。

答案 2 :(得分:-1)

请检查firebase数据库中是否有适当的节点。并在那里添加了一些值。