我试图从数据库中追加到数组“帖子”中,但是看起来主线程跳过了我的指令,直接跳到numberOfRowsInSection并崩溃,因为数组为零!
线程1:致命错误:展开包装时意外发现nil 可选值
任何想法如何强制线程首先执行我对数组指令的追加?
代码如下:
var pods: [Pod]!
override func viewDidLoad() {
super.viewDidLoad()
loadPosts()
}
func loadPosts() {
Database.database().reference().child("Posts").observe(.childAdded) { (DataSnapshot) in
if let dict = DataSnapshot.value as? [String: Any] {
let title = dict["title"] as! String
let description = dict["description"] as! String
let imageURL = dict["image"] as! String
let pod = Pod(image: imageURL, title: title, description: description)
self.pods.append(pod)
self.tableView.reloadData()
}
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return pods.count
}
答案 0 :(得分:0)
您当前的数据源数组将始终为nil
,因为您从未分配它。
因此,将您的数据源数组创建为Pod
个对象的空数组
var pods = [Pod]()