我正在观察Firebase数据库中的.childAdded。当我向数据库中添加一个孩子(字典)时,它应该创建所有值的快照,以解析为我应用程序中的“任务”。
func storeTask(_ task: Task) {
let taskInfo: [String] = [task.title, task.desc, set, due, "\(task.complete)"]
setTaskDatabaseValue(values: taskInfo, dbChild: dbReference.child(task.title))
}
func setTaskDatabaseValue(values val: [String], dbChild db: DatabaseReference) {
db.child("title").setValue(val[0])
db.child("desc").setValue(val[1])
db.child("set").setValue(val[2])
db.child("due").setValue(val[3])
db.child("complete").setValue(val[4])
}
这是我的观察者方法:
func getTasks() {
self.dbReference.observe(.childAdded) { (snapshot) in
let snapVal = snapshot.value as! Dictionary<String,String>
let title = snapVal["title"]!
let desc = snapVal["desc"]!
let set = snapVal["set"]!
let due = snapVal["due"]!
let complete = snapVal["complete"]!
let task = Task(title: title, desc: desc, set: set, due: due, complete: (complete == "true"))
TaskController.sharedInstance.addTaskToLocalList(task)
self.tableView.reloadData()
}
}
在视图控制器的viewDidLoad()中调用getTasks()的地方:
DatabaseController.sharedInstance.addTableView(tableView)
DatabaseController.sharedInstance.getTasks()
observer方法似乎总是只检索任务标题,而没有其他任何东西,但是当我检查Firebase控制台时,所有信息都在那里。为什么会这样?
谢谢!