我正在使用FirebaseUI将Firebase用作我的UITableView的数据源。在firebase中,我有两个数据库 - Users&索取帖子。 我想用“请求帖子”数据库中的信息填充我的UITableView单元格。我尝试运行以下代码,requestPostDatabase总是为零。我已经尝试了其他几种方法,但我无法抓住“Request Post Database”的孩子们。
self.datasource = self.tableView.bind(to: self.ref) { tableView, indexPath, snapshot in
if let snap = snapshot.value as? Dictionary<String, Any> {
let requestPostDatabase = snap["Request Posts"]
print(requestPostDatabase)
}
let cell = tableView.dequeueReusableCell(withIdentifier: "postCell", for: indexPath) as! PostCell
return cell
}
我也尝试过,
let snap = snapshot.child("Request Posts")
获取Request Posts数据库,但由于某种原因,child()函数不可用。
答案 0 :(得分:1)
我认为您需要使用@escaping
来从Firebase获取数据。
就像您拥有控制器中单元格的数据数组一样:
var arrayOfData: [DataItem]()
然后获取数据的功能:
static func getData(completion: @escaping (_ data: [DataItem]) -> Void) {
var data = [DataItem]()
let ref = FIRDatabase.database().reference().child(...).child... // your ref
ref.observeSingleEvent(of: .value, with: { snapshot in
// here you need to parse data and fill array from snapshot
// and data.append(/*your parsed data*/)
// then return data to completion handler
completion(data)
})
}
喜欢这个。你应该明白这个想法。
然后你可以在viewDidLoad()中使用函数:
getData(completion: { newData in
self.data = newData
self.tableView.reloadData()
})
然后你可以使用这个数组来填充你的tableView
希望有所帮助