【发布时间】:2021-11-21 17:42:25
【问题描述】:
我在获取数据时遇到问题,现在似乎可以工作了,但我不需要观察 .childAdded,而是需要观察值。
我当前的代码功能是:
func fetchJobs() {
ref.child("jobposts").observe(.childAdded) { (snapshot) in
guard let dictionary = snapshot.value as? [String:Any] else { return}
var job = JobData()
job.title = (dictionary["title"] as! String) <-- Error in any of the job.*
job.company = (dictionary["company"] as! String)
job.city = (dictionary["city"] as! String)
job.salary = (dictionary["salary"] as! String)
job.creator = (dictionary["creator"] as! String)
self.jobs.append(job)
}
}
当我将 .observe(.childAdded) 更改为 .observe(.value) 时出现错误:
Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
有什么可能导致这种情况的想法吗?
使用 print(dictionary) 打印所有文档,也许我需要以某种方式映射它们?提前谢谢你
【问题讨论】:
-
“有什么想法会导致这种情况吗?”什么是 Firebsse?您指的是哪个服务?
-
不,不要使用 .value 与观察节点中的每个更改一样,重新加载整个节点并且您不希望这样。您希望 .childAdded、.childChanged 和 .childRemoved 获得查找粒度的更新,以便您可以更新 tableView 数据源和 UI。请参阅我对已接受答案的评论。
标签: ios swift firebase firebase-realtime-database