【发布时间】:2019-04-27 03:44:10
【问题描述】:
我能够成功地将数据从我的应用程序写入我的 firebase 实时数据库。我无法检索数据并将其显示在 UIViewController 中。
我有搜索堆栈、YouTube 和 firebase 文档,但没有运气。我打印出计数并返回 0。我相信 For 循环没有迭代或它没有正确附加到我的数组。我已经尝试强制包装和展开 refRepairs,并从中放置 databaseHandle。
override func viewDidLoad() {
super.viewDidLoad()
refRepairs = Database.database().reference().child("repairs");
//observing the data changes
refRepairs!.child("repairs").observe(DataEventType.value, with: { (snapshot) in
//if the reference have some values
if snapshot.childrenCount > 0 {
//clearing the list
self.repairList.removeAll()
//iterating through all the values
for repairs in snapshot.children.allObjects as! [DataSnapshot] {
//getting values
let repairObject = repairs.value as? [String: AnyObject]
let brand = repairObject?["brand"]
let id = repairObject?["id"]
let modelNumber = repairObject?["modelNumber"]
//creating artist object with model and fetched values
let repair = RepairModel(id: id as! String?, brand: brand as! String?, modelNumber: modelNumber as! String?)
//appending it to list
print(snapshot.childrenCount)
self.repairList.append(repair)
}
//reloading the tableview
self.doListTableView.reloadData()
}
})
}
我进行了更改,它正在工作!!!现在,我正在尝试通过uid将记录添加到数据库中,并且我已经成功完成了。现在我有同样的问题,我无法显示记录。我打印了计数,它返回了 1 条正确的记录。这是新代码。
override func viewDidLoad() {
super.viewDidLoad()
refRepairs = Database.database().reference().child("repairs");
//observing the data changes
//refRepairs!.child("uid").observe(DataEventType.value, with: { (snapshot) in
//observing the data changes
refRepairs!.observe(DataEventType.value, with: { (snapshot) in
//if the reference have some values
if snapshot.childrenCount > 0 {
//clearing the list
self.repairList.removeAll()
//iterating through all the values
for repairs in snapshot.children.allObjects as! [DataSnapshot] {
//getting values
let repairObject = repairs.value as? [String: AnyObject]
let brand = repairObject?["brand"]
let uid = repairObject?["uid"]
let id = repairObject?["id"]
let modelNumber = repairObject?["modelNumber"]
//creating artist object with model and fetched values
let repair = RepairModel(uid: uid as! String?, id: id as! String?, brand: brand as! String?, modelNumber: modelNumber as! String?)
//appending it to list
print(snapshot.childrenCount)
self.repairList.append(repair)
}
//reloading the tableview
self.doListTableView.reloadData()
}
})
}
【问题讨论】:
-
另外,我已经仔细检查以确保我的 IBOutlets、委托和数据源已从情节提要连接到控制器。
标签: swift xcode firebase-realtime-database fetch