【发布时间】:2018-06-05 01:26:33
【问题描述】:
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"
}
}
}
}
【问题讨论】:
-
我想我需要更改我的字典设置,以便它看起来正确的孩子,但这是一个完全的猜测?另外,如果这是正确的,我不知道应该是什么?
-
阅读下层:
Database.database().reference().child("Jobs/Job Brand").observe(.childAdded) -
感谢 Frank van Puffelen,但“工作品牌”将被用户命名,并且创建的每个“工作品牌”都有不同的名称。所以我不知道每次都叫什么。有没有办法绕过该级别或只查找存在的每个“jobInfo”文件夹?
-
jobInfo总是同名吗?或者这也是动态的? (提示:提供实际 JSON 的 sn-p 将使这种混淆的可能性大大降低) -
您好 Frank van Puffelen,我已将 JSON 附加到帖子中以帮助理解我的数据库。 jobInfo 始终是相同的名称。 jobName 将是动态的级别。
标签: swift uitableview firebase firebase-realtime-database