【问题标题】:How to put firebase data into two tableViews?如何将firebase数据放入两个tableViews?
【发布时间】:2019-12-12 02:31:15
【问题描述】:

我的 viewController 中有两个 tableView,我试图从 firebase 获取信息。表 1 显示酒店列表,表 2 显示客人电子邮件列表。

我设法填充表 1,但表 2 只是空白。

var Hotels : [DataSnapshot] = []
var Guests : [DataSnapshot] = []

override func viewDidLoad() {
    super.viewDidLoad()

    tableView1.delegate = self
    tableView1.dataSource = self
    tableView2.delegate = self
    tableView2.dataSource = self

if (tableView.tag == 1) {
    if let email = Auth.auth().currentUser?.email {
        Database.database().reference().child("Hotels").queryOrdered(byChild: "email").queryEqual(toValue: email).observe(.childAdded, with: { (snapshot) in
            if let HotelDictionary = snapshot.value as? [String:AnyObject] {
                if let typeOfhotel = HotelDictionary["typeOfHotel"] as? Double {


                } else {
                    self.Hotels.append(snapshot)
                    self.tableView1.reloadData()
                    self.tableView2.reloadData()
                    print(snapshot)
                }
            }
        })
    }
    }
    else if (tableView.tag == 2)
    {
        if let email = Auth.auth().currentUser?.email {
              Database.database().reference().child("Guest").queryOrdered(byChild: "Guest Email").queryEqual(toValue: email).observe(.childAdded, with: { (snapshot) in
                if let guestDictionary = snapshot.value as? [String:AnyObject] {
                    if let typeOfemail = guestDictionary["Guest Email"] as? String {


                    } else {
                        self.Guest.append(snapshot)
                        self.tableView1.reloadData()
                        self.tableView2.reloadData()
                        print(snapshot)
                    }
                }
            })
        }
    }

我的 CellForRowAt 是

    if (tableView.tag == 1) {
            if let email = Auth.auth().currentUser?.email {

                Database.database().reference().child("Hotels").queryOrdered(byChild: "email").queryEqual(toValue: email).observeSingleEvent(of: .childAdded, with: { (snapshot) in

                    let snapshot = self.hotelRequests[indexPath.row]

                    if let HotelDictionary = snapshot.value as? [String:AnyObject] {
                        if let typeOfhotel = HotelDictionary["typeOfHotel"] as? String {

                            }
                                      })
        }

    }
    else if (tableView.tag == 2) {
        if let email = Auth.auth().currentUser?.email {

            Database.database().reference().child("Guest").queryOrdered(byChild: "Guest Email").queryEqual(toValue: email).observeSingleEvent(of: .childAdded, with: { (snapshot) in

                let snapshot = self.Guest[indexPath.row]

                if let guestDictionary = snapshot.value as? [String:AnyObject] {
                    if let typeOfemail = guestDictionary["Guest Email"] as? String {

                            cell.textLabel?.text = typeOfemail
                            print(snapshot)
                }
            })
        }

    }

    return cell
}

numberOfRows 的代码

    if (tableView.tag == 1)
    {
    return self.Hotels.count
}
    else if (tableView.tag == 2)
    {
        return self.Guest.count
    }
     else
    {
        return 0
    }
}

我想查看两个表视图。带有酒店列表的 tableView1 和带有访客电子邮件的 tableView2

【问题讨论】:

  • 您的代码@Nick 中有错字 - 检查我的更新答案

标签: swift firebase uitableview firebase-realtime-database


【解决方案1】:

我相信在客人 firebase 通话中,您使用的是“observeSingleEvent”而不是“observe”,这可能会在两个 if 条件下丢失。尝试在 firebase 来宾调用中仅使用“观察”。

更新:您的代码中有错字:

你已经声明了

 var Guests : [DataSnapshot] = []

但在作业中您刚刚使用了 Guest - 单数。

self.Guest.append(snapshot)

【讨论】:

  • 这是用于 viewDidLoad 还是 cellForRowAt?
  • 我尝试了 viewDidLoad 和 cellForRowAt,它没有工作。 @srinivas
  • 表格视图不断被重新加载,因为当您使用“observe”而不是“observeSingleEvent”时会重复调用该函数。
  • 如果你想让 viewController 监听后端的变化,使用“observe”,如果你想让它观察状态一次,直到被告知这样做,使用“observeSingleEvent”跨度>
  • 我做到了。就像它没有阅读客人的快照一样。 @大卫肖邦
猜你喜欢
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多