我似乎无法从我的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"]);
}];
}
我不知道哪里出错了,对此我的任何帮助都将不胜感激。
谢谢
答案 0 :(得分:3)
将事件类型更改为
[ref observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {
NSLog(@"%@", snapshot.value[@"author"]);
NSLog(@"%@", snapshot.value[@"title"]);
}];
答案 1 :(得分:1)
您通常不会在根节点下存储类似的数据 - 它通常是存储在根节点下的子节点,如下所示:
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_node_0
author: test_author
title: test title
并且第二次返回快照将是
book_node_1
author: another author
title: another title title
使用childByAutoId生成book_node键。
ChildAdded一次一个地读取每个子节点作为快照。
值读取节点中的所有内容;所有子节点,那些子节点等都可以是大量数据。如果ref节点包含子节点,就像在这个答案中一样,返回所有节点并且需要迭代它们以获取子数据,因此在观察块内......
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);
}
}];