Ios 将数据追加到TableView单元格在展开可选值时出现nil上的致命错误

Ios 将数据追加到TableView单元格在展开可选值时出现nil上的致命错误,ios,swift,uitableview,Ios,Swift,Uitableview,几个月前,我编写了这个应用程序,从Firebase检索数据并在TableViewCell中显示。今天开始这个项目,我面临这个问题 致命错误:在展开可选值时意外发现nil 实际上我不知道该怎么办 产生问题的代码行如下所示: if snapshot.exists() { self.acceptedQuests.append(InfoQuest(rest.key, quest?["name"] as! String, quest?["description"] as! String, quest?[

几个月前,我编写了这个应用程序,从Firebase检索数据并在TableViewCell中显示。今天开始这个项目,我面临这个问题

致命错误:在展开可选值时意外发现nil

实际上我不知道该怎么办

产生问题的代码行如下所示:

if snapshot.exists()
{
 self.acceptedQuests.append(InfoQuest(rest.key, quest?["name"] as! String, quest?["description"] as! String, quest?["image"] as! String))
 print(self.acceptedQuests.count)
 self.tableView!.reloadData()
}

任何帮助都将不胜感激

您的错误要么发生在您铸造任务元素时,要么发生在引用表视图时。如果您的表视图为零,那么我会感到惊讶,因为这可能是在您进行铸造时发生的。这是一个守卫声明非常有效的例子

if snapshot.exists()
{
   guard let name = quest?["name"] as? String,
         let description = quest?["description"] as? String,
         let image = quest?["image"] as? String,
         let tableView = self.tableView else
         {
            // One of those values was either nil or could not become a String
           return
         }
   self.acceptedQuests.append(InfoQuest(rest.key, name, description, image))
   print(self.acceptedQuests.count)
   tableView.reloadData()
}

这将阻止您访问零项。如果任何强制转换失败或任何值为nil,else块将执行并返回

谢谢,现在表不会崩溃,但仍然不会检索数据并附加它们…在保护块中添加一条print语句,在那里您可以通过print(任务?[“name”])看到哪些值为nil谢谢!解决了的!