Swift - 如何从 Firebase 检索多个值并将它们显示在 UITABLEVIEW

Posted

技术标签:

【中文标题】Swift - 如何从 Firebase 检索多个值并将它们显示在 UITABLEVIEW【英文标题】:Swift - How to retrieve multiple values from Firebase and display them on UITABLEVIEW 【发布时间】:2017-08-10 04:01:11 【问题描述】:

这是我的数据库的结构。我将每个事件都以 uuid 作为其唯一标识符存储在根节点“事件”下。

events:
     uuid:
        name: summer festival 2017
        site: vegas
        participants:
           employeeID1: true
           employeeID2: true 

我有一个包含 3 列的 UITableview,我希望该表显示以下数据

Colum1(event name)       Column2(site)          Column2(# of Participants) 
summer festival 2017     vegas                  2000

我尝试了这段代码,但它不起作用。请帮忙。

let myRef = ref?.child("events")

myRef?.queryOrdered(byChild: "name").observe(.childAdded, with:  (snapshot) in

            for child in snapshot.children 
                let snap = child as! DataSnapshot
                if let eventName = snap.value["name"] as String 
                    self.events.append(eventName)
                
            

        )

【问题讨论】:

你想在databaseHandler的一种机制中获取所有数据并一次显示在TableView中? 你好。感谢您的回复。是的,有可能吗?如果可以,我该怎么做? 请不要使用查询,如果您想一次性输入所有数据,只需在数据库处理程序中获取所有事件并稍后对其进行排序我在我的聊天应用程序中进行过,我应该给您看一些演示吗? 是的,我是 Firebase 新手,不知道如何实现这些代码。 好的,请稍等 【参考方案1】:

这是您可以尝试的代码。希望对您有所帮助!

//TableView outlet
@IBOutlet weak var namesTable: UITableView!

//Array to save all event Names
var names = [String]()

//Database handler Object
var readData = DatabaseReference()

//I use a separate Dictionary to take snapshot out of handler if required
var postData = [String:AnyObject]()

//make use of serrate function or calling didLoad 
override func viewDidLoad() 
    super.viewDidLoad()

//Database reference to Fetch Data
readData = Database.database().reference()

//here is a databaseHandler which fetch all events data at once
    self.databaseHandler = self.readData.child("events").observe(.value, with:  (snapshot) in
        self.postData = ((snapshot.value) as? [String : AnyObject]!)!

        //print data to see if you require 
        //print it to generate loop for required things
        print(self.postData)

        //make snapshot as [string:anyobject]
        if let snapDict = snapshot.value as? [String:AnyObject]

            ////here is a loop which will run after you get your snapshot
            for each in snapDict
                 //you will get all your names in a array all at once
                let artistName = each.value["name"] as! String

                //use this array to save all event name
                self.names.append(artistName)

            
            //remove ypur datasource and delegate from Storyboard
            //here you can provide datasource and delegate
            //if on same controller you have multiple functionality 
            //write reload table line here with datasource and delegate
            self.namesTable.dataSource = self
            self.namesTable.delegate = self
        
    )

TableView 委托

 func numberOfSectionsInTableView(tableView: UITableView) -> Int 
    return 1


func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int

    return names.count



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

    let cell = self.namesTable.dequeueReusableCell(withIdentifier: "Cell")!
    cell.textLabel?.text = names[indexPath.row]
    return cell

【讨论】:

如果仍然遇到任何问题,请告诉我 感谢 ios 极客。我会试试这个 你是个天才。有效。非常感谢!我很高兴:) 欢迎。乐于助人:)

以上是关于Swift - 如何从 Firebase 检索多个值并将它们显示在 UITABLEVIEW的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 中的 url 从 firebase 正确检索数据?

从firebase实时数据库IOS Swift中检索数据

如何从firebase数据库中检索url并通过UIButton(SWIFT)显示url?

使用swift 3如何从firebase中检索另一个数据中的数据[关闭]

从 Firebase 检索数据等于意外 nil - swift

Swift 从 Firebase 检索数据