2016-05-16 209 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

相關問題