2016-09-21 118 views
0

我一直在查看Firebase網站上的API,但是,當我打印快照時,我從我的數據庫中得到的所有內容從Swift的Firebase中檢索數據

我想只打印我剛設置的值,這是我的變量:test_person_1

import UIKit 
import Firebase 

class Test: UIViewController { 


override func viewDidLoad() { 
     super.viewDidLoad() 

    let ref = FIRDatabase.database().reference() 



    ref.observeEventType(.ChildAdded, withBlock: { (snapshot) in 



     var test_person_1 = ["full_name": "Test 1", "date_of_birth": "June 1, 2000"] 
     var Test_person_2 = ["full_name": "Grace Hopper", "date_of_birth": "July 1, 2000"] 
        let usersRef = ref.child("New child") 


     usersRef.setValue([test_person_1]) 


     print(snapshot) // 


    }) 

的Json樹:enter image description here

+0

給你的JSON樹。 as text not snippet – Dravidian

回答

1

通過打印快照時,該值尚未設置在服務器上呢。

如果你想打印時,數據被髮送到服務器,添加所謂的完成監聽到你的setValue()電話:

usersRef.setValue([test_person_1]) { (error, ref) in 
    print(error, ref) 
} 

如果沒有錯誤,你知道的價值服務器就是你剛剛寫的。但是如果你想讀取服務器的值,你需要爲它添加一個監聽器:

usersRef.setValue([test_person_1]) { (error, ref) in 
    ref.observeSingleEventOfType(.Value) { (snapshot) in 
     print ("new value \(snapshot.value)") 
    } 
} 
+0

謝謝你的幫助! 如果我想稍後檢索數據,而不是數據正在發送時該怎麼辦? 我試圖在用戶在某些文本框中寫入一些輸入後,在另一個視圖控制器上稍後檢索並打印這些輸入。 – Frederic

+0

您可以在回調之外附加一個偵聽器,並帶'ref.observeEventOfType()'。您是否閱讀了[有關檢索數據的Firebase文檔](https://firebase.google.com/docs/database/ios/retrieve-data)或採用了[iOS codelab](https://codelabs.developers.google。 COM/codelabs /火力-IOS-斯威夫特/#0)?這兩個概念都很好。 –

+0

我整天都在「檢索數據」頁面上度過,但是我必須承認我可能會超過我的頭。編程相當新穎......所以我可以理解它,最後在這裏結束。我很感謝你的幫助,我會一起來看看。謝謝 – Frederic