我的Firebase数据结构如下所示:
以下代码用于将标签的值更新为condition
的当前值:
import UIKit
import Firebase
class ViewController: UIViewController {
let conditionRef = Database.database().reference().child("condition")
@IBOutlet weak var conditionLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
conditionRef.observe(.value) {
(snap: DataSnapshot) in
self.conditionLabel.text = (snap.value as! String).description
}
}
我想将标签的值更新为test2
的值。我尝试了很多东西,但对我来说最有意义的是将常量conditionRef改为:
let conditionRef = Database.database().reference().child("test1").child("test2")
这不起作用,我不知道会发生什么。我已经浏览了Firebase文档和多个YouTube教程,但似乎无法弄清楚这个琐碎的细节。
任何帮助将不胜感激,提前感谢。
答案 0 :(得分:0)
一种解决方案是创建对您想要值的节点的引用,然后使用以下单个事件观察它:
class ViewController: UIViewController {
var ref: DatabaseReference!
override func viewDidLoad() {
super.viewDidLoad()
self.ref = Database.database().reference()
let test2Ref = self.ref.child("fir-2-b1233").child("test1").child("test2")
test2Ref.observeSingleEvent(of: .value, with: { snapshot in
let val = snapshot.value as! Int
print(val)
})
}
}
关键是要确保包含要从中获取数据的子节点的完整路径。
和我的Firebase结构
{
"fir-2-b1233" : {
"condition" : "foggy",
"test1" : {
"test2" : 0,
"test3" : 0
}
}
}