在解包可选值时,将数据附加到n上的TableView单元格致命错误

时间:2017-06-25 19:47:05

标签: ios swift uitableview

几个月前我写了这个应用程序,它从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()
}

任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:0)

您在投射任务元素时或引用表视图时发生了错误。如果你的桌面视图为零,我会感到惊讶所以当你施放时可能会发生这种情况。这是一个保护声明可以很好地运作的例子

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块将执行并返回