2016-05-16 166 views
1

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

database screenshot

这是我在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

检查,如果你的火力网址正确 – Rajesh

+0

FEventTypeChildAdded是完全合法的 - 它会在遍历每个子节点加载孩子们在一个一次。我测试了它,并且他的代码正常工作。也许你的firebase url不对,或者你有规则防止数据被读取?什么路线崩溃? – Jay

+0

让我补充说,它完美的工作假设这不是根参考。如果是,请参阅我的答案。 – Jay

回答

3

改变事件类型

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

你一般不会存放喜欢你的根节点下是正确的数据 - 这通常是根节点下保存一个子节点(S) ,如下所示:

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 

的book_node密钥与childByAutoId生成。

ChildAdded逐个读取每个子节点中的一个作为快照。

值读入节点中的所有内容;所有的孩子节点,那些孩子等等,并且可以是大量的数据。如果裁判节点包含的孩子,像这样的答案,所有的节点都回来了,他们需要遍历得到孩子的数据,所以内部的观察块...

for child in snapshot.children { 
    NSLog(@"%@", child.value[@"author"]); 
} 

编辑 - 和具体回答OP的问题,这里是你如何与火力地堡结构问题做:

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); 
    } 
}]; 
+0

当我用这个我的日志显示; 2016-05-17 10:03:53.535天气[996:26330] 0 2016-05-17 10:03:53.645天气[996:26330](null) 2016-05-17 10:03:54.161天气[996:26330](null) 2016-05-17 10:03:54.162天气[996:26330](null) 2016-05-17 10:03:54.162天气[996:26330](null) – vype

+0

@ vype评论中的“天气”文本有点令人困惑,因为这不是您最初问题中的代码或Firebase结构的一部分。所以,这意味着您的网址指向了错误的Firebase。我复制了您的Firebase结构,并在我的答案中运行了代码,证明它正常工作。 – Jay

相关问题