2016-09-21 201 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