Ios 应用程序未从firebase检索数据

Ios 应用程序未从firebase检索数据,ios,firebase,firebase-realtime-database,Ios,Firebase,Firebase Realtime Database,我似乎无法从firebase数据库中检索任何信息。我创建了一个包含作者和标题的表 这是我在ios应用程序中运行的代码,但应用程序一直崩溃 // Get a reference to our posts Firebase *ref = [[Firebase alloc] initWithUrl: @"**********"]; [ref observeEventType:FEventTypeChildAdded withBlock:^(FDataSnapshot *snapshot) {

我似乎无法从firebase数据库中检索任何信息。我创建了一个包含作者和标题的表

这是我在ios应用程序中运行的代码,但应用程序一直崩溃

// Get a reference to our posts
Firebase *ref = [[Firebase alloc] initWithUrl: @"**********"];

[ref observeEventType:FEventTypeChildAdded withBlock:^(FDataSnapshot *snapshot) {
    NSLog(@"%@", snapshot.value[@"author"]);
    NSLog(@"%@", snapshot.value[@"title"]);
}];

}
我不知道出了什么问题,对此我将不胜感激

谢谢

将事件类型更改为

[ref observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {
     NSLog(@"%@", snapshot.value[@"author"]);
      NSLog(@"%@", snapshot.value[@"title"]);
 }];
将事件类型更改为

[ref observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {
     NSLog(@"%@", snapshot.value[@"author"]);
      NSLog(@"%@", snapshot.value[@"title"]);
 }];

通常情况下,您不会将这样的数据存储在根节点下-它通常是存储在根节点下的子节点,如下所示:

sizzling-inferno-255
  book_node_0
    author: test_author
    title: test title
  book_node_1
    author: another author
    title: another title title


Firebase *ref = [[Firebase alloc] initWithUrl: @"sizzling-inferno-255"];

[ref observeEventType:FEventTypeChildAdded withBlock:^(FDataSnapshot *snapshot) {
    NSLog(@"%@", snapshot.value[@"author"]);
    NSLog(@"%@", snapshot.value[@"title"]);
}];
将迭代每个book节点并返回该节点的快照。因此,第一次返回快照时,它将

  book_node_0
    author: test_author
    title: test title
第二次返回快照时

  book_node_1
    author: another author
    title: another title title
book_节点键是使用childByAutoId生成的

ChildAdded每次读取一个子节点作为快照

值读入节点中的所有内容;所有子节点、这些子节点等都可以是大量数据。如果ref节点包含子节点(如本答案中所示),则返回所有节点,需要对它们进行迭代以获取子数据,因此在observe块中

for child in snapshot.children {
   NSLog(@"%@", child.value[@"author"]);
}
编辑-为了具体回答OP问题,以下是您如何使用问题中的Firebase结构:

self.myRootRef = [[Firebase alloc] initWithUrl:@"https://**********"];
[ref observeEventType:FEventTypeChildAdded withBlock:^(FDataSnapshot *snapshot) { 
    NSString *key = snapshot.key;
    NSString *value = snapshot.value;

    if ( [key isEqualToString:@"author"] ) {
        NSLog(@"author = %@", value);
    } else if ([snapshot.key isEqualToString:@"title"] ) {
        NSLog(@"title = %@", value);
    }
}];

通常情况下,您不会将这样的数据存储在根节点下-它通常是存储在根节点下的子节点,如下所示:

sizzling-inferno-255
  book_node_0
    author: test_author
    title: test title
  book_node_1
    author: another author
    title: another title title


Firebase *ref = [[Firebase alloc] initWithUrl: @"sizzling-inferno-255"];

[ref observeEventType:FEventTypeChildAdded withBlock:^(FDataSnapshot *snapshot) {
    NSLog(@"%@", snapshot.value[@"author"]);
    NSLog(@"%@", snapshot.value[@"title"]);
}];
将迭代每个book节点并返回该节点的快照。因此,第一次返回快照时,它将

  book_node_0
    author: test_author
    title: test title
第二次返回快照时

  book_node_1
    author: another author
    title: another title title
book_节点键是使用childByAutoId生成的

ChildAdded每次读取一个子节点作为快照

值读入节点中的所有内容;所有子节点、这些子节点等都可以是大量数据。如果ref节点包含子节点(如本答案中所示),则返回所有节点,需要对它们进行迭代以获取子数据,因此在observe块中

for child in snapshot.children {
   NSLog(@"%@", child.value[@"author"]);
}
编辑-为了具体回答OP问题,以下是您如何使用问题中的Firebase结构:

self.myRootRef = [[Firebase alloc] initWithUrl:@"https://**********"];
[ref observeEventType:FEventTypeChildAdded withBlock:^(FDataSnapshot *snapshot) { 
    NSString *key = snapshot.key;
    NSString *value = snapshot.value;

    if ( [key isEqualToString:@"author"] ) {
        NSLog(@"author = %@", value);
    } else if ([snapshot.key isEqualToString:@"title"] ) {
        NSLog(@"title = %@", value);
    }
}];

检查您的firebase url properEventTypeChildAdded是否完全合法-它将遍历每个子节点,每次加载一个子节点。我对它进行了测试,他的代码运行正常。也许您的firebase url不正确,或者您有防止读取数据的规则?它在哪一行崩溃?让我补充一点,假设这不是根引用,它工作得很好。如果是,请参阅我的答案。检查您的firebase url properEventTypeChildAdded是否完全合法-它将在每个子节点上迭代,每次加载一个子节点。我对它进行了测试,他的代码运行正常。也许您的firebase url不正确,或者您有防止读取数据的规则?它是在哪一行上崩溃的?让我补充一点,假设这不是根引用,它可以完美地工作。如果是,请参阅我的答案。当我使用它时,我的日志显示;2016-05-17 10:03:53.535天气[996:26330]0 2016-05-17 10:03:53.645天气[996:26330]零2016-05-17 10:03:54.161天气[996:26330]零2016-05-17 10:03:54.162天气[996:26330]零2016-05-17 10:03:54.162天气[996:26330] null@vype您的评论中的“天气”文本有点令人困惑,因为这不是您最初问题中代码或Firebase结构的一部分。因此,这意味着您的URL指向了错误的Firebase。我复制了你的Firebase结构并运行了我答案中的代码,它工作正常;2016-05-17 10:03:53.535天气[996:26330]0 2016-05-17 10:03:53.645天气[996:26330]零2016-05-17 10:03:54.161天气[996:26330]零2016-05-17 10:03:54.162天气[996:26330]零2016-05-17 10:03:54.162天气[996:26330] null@vype您的评论中的“天气”文本有点令人困惑,因为这不是您最初问题中代码或Firebase结构的一部分。因此,这意味着您的URL指向了错误的Firebase。我复制了你的Firebase结构并运行了我答案中的代码,它工作正常。