使用适用于iOS的FirebaseUI访问数据库

时间:2017-05-03 09:02:21

标签: ios firebase swift3 firebaseui

我正在使用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()函数不可用。

1 个答案:

答案 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

希望有所帮助