你一般不會存放喜歡你的根節點下是正確的數據 - 這通常是根節點下保存一個子節點(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);
}
}];
來源
2016-05-16 19:17:06
Jay
檢查,如果你的火力網址正確 – Rajesh
FEventTypeChildAdded是完全合法的 - 它會在遍歷每個子節點加載孩子們在一個一次。我測試了它,並且他的代碼正常工作。也許你的firebase url不對,或者你有規則防止數據被讀取?什麼路線崩潰? – Jay
讓我補充說,它完美的工作假設這不是根參考。如果是,請參閱我的答案。 – Jay