Firebase 结构
您好,我正在尝试研究如何在我的 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/