gpt4 book ai didi

json - 快速检索 firebase 子节点的问题

转载 作者:行者123 更新时间:2023-11-28 12:16:16 25 4
gpt4 key购买 nike

Xcode 9 - swift 4

没有对 Firebase 数据设置权限 - 读/写所有人

我将 json 数据导入到 firebase 中,我的数据如下所示。

enter image description here

我正在尝试获取 FireBase 数据库中列出的职位的标题,将标题列表放入数组中并放入 tableView 中,它不会返回任何内容我的快速代码看起来像这样..

import UIKit
import FirebaseDatabase


class PostViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var jobPostsTableView: UITableView!

var ref: DatabaseReference?
var databaseHandle: DatabaseHandle = 0


var searchJSONQuery : String = ""

var jobsData = [String]()

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view, typically from a nib.

jobPostsTableView.delegate = self
jobPostsTableView.dataSource = self

//Set the Firebase Reference
ref = Database.database().reference()



// Retreive the posts and listen for changes
databaseHandle = (ref?.child("positions/title").observe(.childAdded, with: { (snapshot) in
//Code to execute when a child is added under "positions"
//Take the value from the snapshot and add it to the jobsData array

let list = snapshot.value as? String

if let actualList = list {
self.jobsData.append(actualList)
self.jobPostsTableView.reloadData()
}

}))!


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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "PostCell")
cell?.textLabel?.text = jobsData[indexPath.row]
return cell!
}


}

最佳答案

当使用 child() 时,您只能在树下向下移动一层。因为您有很多职位,所以您不能简单地使用 child("title") 访问标题。

当调用 observeSingleEvent 时,您正在寻找您在数据库引用中声明的键的

通过下面的方式,您可以获得“positions”键下所有值的快照。因此,您使用 for 循环来访问每个对象的“标题”值。

您应该将其编写为一个单独的函数并从 viewDidLoad() 调用它,而不是在 viewDidLoad 本身中编写 firebase 代码。

func retrieveJobTitles(){

let positionRef = ref.child("positions")

positionsRef.observeSingleEvent(of: .value, with: { (snapshot) in

// Iterate through all of your positions
for child in snapshot.children.allObjects as! [DataSnapshot] {

let position = child as! DataSnapshot

let positionsInfo = position.value as! [String: Any]

let jobTitle = positionsInfo["title"] as! String

if jobTitle != nil {
self.jobsData.append(jobTitle)
}
}

self.jobPostsTableView.reloadData()
})
}
}

关于json - 快速检索 firebase 子节点的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46472307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com