本文介绍了代码仅从Firebase中的数据中检索一个值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

正如标题所示,我正在尝试从Firebase数据库检索一些数据,但是我的代码无法正常工作.我在职位",描述"和用户名"的帖子"中有三个孩子(我想这就是您的称呼),我试图将所有这些孩子添加到变量中以供以后使用,但尽管实际上有5个值,但它仅检索每个值的第一个值.有人知道为什么吗?顺便说一下,我正在ViewDidLoad上调用此函数.

As the title suggests, I'm trying to retrieve some data from firebase database, but my code's not working. I have three children (I guess that's how you call them) inside "Posts" called "title", "description" and "username" and I'm trying to get all of them and append them into a variable to use them later, but it only retrieves the first value of each of them, despite the fact that there are like 5 values. Anyone knows why?By the way, I'm calling upon this function on my ViewDidLoad.

let postDB = Database.database().reference().child("Posts")
postDB.queryOrderedByKey().observeSingleEvent(of: .value) { (snapshot) in
    if let snapshotValue = snapshot.value as? NSDictionary {

    let postTitle = snapshotValue["title"] as? String
    let postUsername = snapshotValue["username"] as? String
    let postDesc = snapshotValue["description"] as? String

    let postArray = postStruct(title: postTitle, description: postDesc, username: postUsername)
    self.newPost.insert(postArray, at: 0)

    }

推荐答案

import UIKit
import FirebaseDatabase

class HomeViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    // MARK: - variables
    var postDB: DatabaseReference!

    override func viewDidLoad() {
        super.viewDidLoad()

        // getting a node from database //
        postDB = Database.database().reference().child("Posts")

        // observing data changes //
        postDB.observe(DataEventType.value) { (dataSnapshot) in
            self.postArray.removeAll()
            if dataSnapshot.childrenCount > 0 {
                for post in dataSnapshot.children.allObjects as! [DataSnapshot] {
                    let object = post.value as! [String: Any]
                    let description = object["description"] as! String
                    let title = object["title"] as! String
                    let userName = object["username"] as! String
                    let model = postStruct(title: title, description: description, username: userName))
                    self.postArray.append(model)
                }
            }
            self.tableView.reloadData()
        }
    }
}

这篇关于代码仅从Firebase中的数据中检索一个值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-02 00:17