微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 Firebase 实时数据库获取数据到 Tableview 单元格

如何解决从 Firebase 实时数据库获取数据到 Tableview 单元格

我正在从 firebase 实时数据库中检索数据并使用它来设置表格视图单元格中的标签文本。现在,每当我在模拟器和/或在我的 iPhone 上打开 tableview 时,它都会出现空白。我已经确保可重用标识符是正确的,TableViewController 的名称在 swift 文件和故事板等中匹配。我已经运行了一些测试试图查看出了什么问题,我认为代码只是没有阅读数据库中的数据,即使我知道它在那里。这是 TableViewController 的当前代码


import UIKit
import FirebaseDatabase
import FirebaseAuth

class RemoveSpots: UITableViewController {
    
    var spotRef:DatabaseReference?

    @IBOutlet weak var spotView: UITableView!
    
    var postData = [SpotModel]()
    
    override func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell",for: indexPath) as! SpotCell
        
        let spot: SpotModel
        spot = postData[indexPath.row]
        cell.TypeLabel.text = spot.type
        cell.PriceLabel.text = spot.price
        cell.AvailLabel.text = spot.avail
        cell.ContactLabel.text = spot.contact
        
        return cell
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        spotView.delegate = self
        spotView.dataSource = self
        let userID = Auth.auth().currentUser?.uid
        spotRef = Database.database().reference().child("\(userID)")
        fillTable()
        spotView.reloadData()
    }
    
    func fillTable() {
        spotRef?.observe(.childAdded,with: { (snapshot) in
        
                for spots in snapshot.children.allObjects as![DataSnapshot] {
                    let spotObject = spots.value as? [String: AnyObject]
                    let spottype = spotObject?["Type"]
                    let spotPrice = spotObject?["Price"]
                    let spotAvail = spotObject?["Availability"]
                    let spotContact = spotObject?["Contact"]
                    let cell = SpotModel(type: spottype as! String,price: spotPrice as! String,avail: spotAvail as! String,contact: spotContact as! String)
                    self.postData.append(cell)
                }
                self.spotView.reloadData()
        })
    }
}

这是自定义单元格的代码



import UIKit

class SpotCell: UITableViewCell {

    
    @IBOutlet weak var ContactLabel: UILabel!
    @IBOutlet weak var AvailLabel: UILabel!
    @IBOutlet weak var PriceLabel: UILabel!
    @IBOutlet weak var TypeLabel: UILabel!
    
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool,animated: Bool) {
        super.setSelected(selected,animated: animated)

        // Configure the view for the selected state
    }

}

连同第二个 swift 文件


class SpotModel {
    var type: String?
    var price: String?
    var avail: String?
    var contact: String?
    
    init(type: String?,price: String?,avail: String?,contact: String?) {
        self.type = type
        self.price = price
        self.avail = avail
        self.contact = contact
    }
}

我不知道这里出了什么问题,已经解决了四分之一天,认为解决方案一定很简单,并且会以永恒的感激之情回报任何帮助。 Here is an example of the database layout. This is one User ID,with a few entries (titles with random numbers) within it. I am only trying to access the children of one user ID at a time (that of the current user),as you can see by the code

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。