Ios 将数据追加到TableView单元格在展开可选值时出现nil上的致命错误
几个月前,我编写了这个应用程序,从Firebase检索数据并在TableViewCell中显示。今天开始这个项目,我面临这个问题 致命错误:在展开可选值时意外发现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?[
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谢谢!解决了的!