gpt4 book ai didi

swift - 在 firebase 数据库中搜索子子项

转载 作者:行者123 更新时间:2023-11-28 15:09:13 24 4
gpt4 key购买 nike

Firebase 结构

enter image description here

您好,我正在尝试研究如何在我的 Firebase 数据库(附加结构)中查询 jobBrand 和 jobName 并将其存储在 tableView 中。我将在每个职位品牌下存储更多信息,因此我希望尽可能保持这种结构?

到目前为止,我可以让 tableView 读取 2 个字段(如果它们在上一级),因此结构为:

tbaShootApp -> 职位 -> 职位品牌 > 数据。

我无法向下查询另一个级别并将其存储在 tableView 中。这可能吗?

我正在使用字典来存储工作信息:

class Job: NSObject {
var id: String?
var jobBrand: String?
var jobName : String?
var director : String?
var jobInfo : jobInfo?
init(dictionary: [String: AnyObject]) {
self.id = dictionary["id"] as? String
self.jobBrand = dictionary["jobBrand"] as? String
self.jobName = dictionary["jobName"] as? String
self.director = dictionary["Director"] as? String
}

这是查询数据的代码 - 我的 superViewDidLoad 中有函数“fetchJobs”。

func fetchJobs() {

Database.database().reference().child("Jobs").observe(.childAdded) { (snapshot) in

if let dictionary = snapshot.value as? [String: AnyObject] {

let job = Job(dictionary: dictionary)
job.id = snapshot.key
self.jobs.append(job)

//this will crash because of background thread, use dispatch_async to fix
DispatchQueue.main.async(execute: {
self.tableView.reloadData()
})
}
}
}

JSON

{
"Jobs" : {
"Candycrush" : {
"cameraInfo" : {
"cameraBody" : "A",
"cameraBrand" : "Arri",
"cameraType" : "Alexa"
},
"jobInfo" : {
"jobBrand" : "CandyCrush",
"jobName" : "Winter"
}
},
"Honda" : {
"cameraInfo" : {
"cameraBody" : "A",
"cameraBrand" : "Arri",
"cameraType" : "Alexa XT"
},
"jobBrand" : "Honda",
"jobName" : "Comet"
},
"WWF" : {
"cameraInfo" : {
"cameraBody" : "A",
"cameraBrand" : "Red",
"cameraType" : "Epic"
},
"jobInfo" : {
"jobBrand" : "WWF",
"jobName" : "Eye"
}
}
}
}

最佳答案

还有很长的路要走,但也许这会有所帮助:

 .child("Jobs").observe(.childAdded)

它会在每次添加新工作(Candycrush、本田等)时通知您。

(注意 - 除其他外,您很可能还想观察该列表中的移除情况。)

如果您正在制作一个表格(或任何...某种列表、分页对象、选项卡集合等):

几乎可以肯定,表格的每一行自己想要观察那项工作。

因此第一行将观察 Jobs/Candycrush

中的变化

因此第二行将观察 Jobs/Honda

的变化

等等。每个表格行(或屏幕、面板、气泡、选项卡或其他任何东西)都会自己观察那个东西。

顺便说一句,几乎可以肯定那里的“第一级”标题(本田、Candycrush 等所在的位置)是一个 id 字符串。 (只需使用 UUID,或让 Firebase 执行。)然后字段“标题”将是本田等。使用实际标题作为那里的 ID 是非常不寻常的。 (请注意,除此之外,您无法更改/编辑标题!)。

关于swift - 在 firebase 数据库中搜索子子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47940703/

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