【发布时间】:2018-01-17 08:40:50
【问题描述】:
我尝试将数据从 Firebase 数据库检索到 Xcode 中的 tableview
但即使我在数据库中有很多元素,我也只得到了一个元素。
我按照教程进行操作,假设我将 return sonsList.count 设置为 numberOfRowsInSection,但没有任何反应。
这是我的代码:
import UIKit
import Firebase
import FirebaseDatabase
class sons {
let name : String!
//let place : String!
init(title_String : String!){
self.name = title_String
// self.place = place_String
}
}
class sonsTableViewController: UITableViewController {
var ref:DatabaseReference!
//var sons = [String]()
var newSon: String = ""
let cellId = "cellId"
var refHandel : uint!
var sonsList = [sons]()
override func viewDidLoad() {
super.viewDidLoad()
ref = Database.database().reference()
ref.child("name").queryOrderedByKey().observeSingleEvent(of: .childAdded, with: { snapshot in
let value = snapshot.value as? NSDictionary
let name = value!["name"] as! String
self.sonsList.append(sons(title_String : name))
self.tableView.reloadData()
})
//fetchName()
}
func fetchName() {
}
@IBAction func cancel(segue:UIStoryboardSegue) {
}
@IBAction func done(segue:UIStoryboardSegue) {
var sonDetailVC = segue.source as! addSonViewController
newSon = sonDetailVC.name
// sons.append(newSon)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return sonsList.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "Cell")
let label = cell?.viewWithTag(1) as! UILabel
label.text = sonsList[indexPath.row].name
return cell!
}
}
【问题讨论】:
-
只有每次新增的记录才会得到
-
是的,我第一次得到数据库中的第一个元素,然后如果我添加一个元素,我就得到了。如何检索所有数据?请
-
使用valuechanged事件
ref.child(" parrent of name").queryOrderedByKey().observeSingleEvent(of: .valueChanged, with: { snapshot in }) -
不幸的是,在我添加此行后应用程序崩溃
ref.child("name").queryOrderedByKey().observeSingleEvent(of: .value, with: { snapshot in -
请分享你的firebase JSON结构,这样我可以解释更多细节
标签: ios swift xcode firebase firebase-realtime-database