作为一个新手,我也尝试了一些简单的调试技术,但没有帮助。 究竟如何修复此代码以便进行读取(我知道它发生的原因是代码打印到终端)?
我真的很喜欢基于Swift 4的解决方案,谢谢。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var ref:DatabaseReference!
var refHandle:DatabaseHandle!
ref = Database.database().reference()
ref.child("test").setValue("name: Bruce")
//下面没有任何作品
refHandle = ref.child("test").observe(DataEventType.childAdded, with: { (snapshot) in
let info = snapshot.value as? String
print(info as Any)
})
}
请注意,我的Firebase数据库已启用READ和WRITE。我也试过了observeSingleInsance(或者只读了一次)。
我知道写入有效,因为我可以在Firebase控制台中看到数据
答案 0 :(得分:0)
当你正在尝试收听子添加时这样读,所以用value替换childAdded,你应该等到写进程发生然后再读,假设再次启动应用程序只读
refHandle = ref.child("test").observeSingleEvent(of: .value, with: { (snapshot) in
let info = snapshot.value as? String
print(info as Any)
})
答案 1 :(得分:0)
答案 2 :(得分:0)
我相信您的问题出在setValue(“name:Bruce”)中,您将节点“test”设置为“name:Bruce”,而不是“name”:“Bruce” 如果你改变那个说
updateChildValues(["name": "Bruce"])
肯定会有用。
答案 3 :(得分:0)
你启用了吗?然后尝试将其更改为
Database.database().isPersistenceEnabled = false
否则试试这个并打印你得到的快照(你实际上不需要手柄):
ref.child("test").observe(.value, with: { (snapshot) in
print(snapshot)
})