在UITableView中显示Firebase数据 [英] Display Firebase Data in UITableView

查看:31
本文介绍了在UITableView中显示Firebase数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使UITableView从我的Firebase数据库显示以下结构的数据

I am trying to make a UITableView display data from my firebase database which is in the following structure

我需要第一个标签来显示商店的名称和商店的类型.当我从数据库中打印值时,它将显示商店列表及其旁边的类型.但是,我发现很难将其复制到UITableView中.感谢您的帮助.这是我的代码:

I need the first label to display the shop's name and the shop's type. When I print the values from the database, it displays the list of the shops and the type next to it. However, I am finding it difficult to replicate this into the UITableView. Thank you for the help. Here is my code:

import UIKit
import Firebase


struct shopStruct {
let shopName: String!
let shopType : String!

}



class HomeViewController: UIViewController, UITableViewDataSource , UITableViewDelegate  {


@IBOutlet weak var homeTableView: UITableView!
var databaseRef: DatabaseReference!
 var shops = [shopStruct]()




override func viewDidLoad() {
    super.viewDidLoad()



    databaseRef = Database.database().reference()

    databaseRef.child("shops").queryOrderedByKey().observe(.childAdded, with: { (snapshot) in

        if let valueDictionary = snapshot.value as? [AnyHashable:String]
        {
            let shopName = valueDictionary["name"]
            let shopType = valueDictionary["type"]

            self.shops.insert(shopStruct(shopName: shopName, shopType: shopType), at: 0)
            self.homeTableView.reloadData()
        }
    })
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return shops.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

    let label1 = cell.viewWithTag(1) as! UILabel
    label1.text = shops[indexPath.row].shopName

    let label2 = cell.viewWithTag(2) as! UILabel
    label2.text = shops[indexPath.row].shopType


    return cell
}

}

推荐答案

您必须在 viewDidLoad

self.homeTableView.dataSource = self 

这篇关于在UITableView中显示Firebase数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆