推送视图控制器时出现线程错误,结果为零



选择单元格时,我正试图将用户发送到另一个视图控制器。我正在使用didSelectRowAt函数来推动视图控制器,并用数据填充图像和标签。我遇到一个崩溃,上面写着:线程1:致命错误:在打开pushViewController行中的可选值时意外发现nil。我不确定为什么会发生这个错误,因为使用另一个视图控制器时这个问题已经解决了一段时间。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)


let songName = songs[indexPath.row].cleanName
let fileURLString = "(filePath)(songName)"
print(fileURLString)
Player.shared.playStream(fileUrl: fileURLString)
let SvC = storyboard?.instantiateViewController(withIdentifier: "SongsPlayerViewController") as? SongPlayerViewController

SvC?.songNames.text = songs[indexPath.row].cleanName
SvC?.songCover.image = UIImage(named: songs[indexPath.row].cover)

self.navigationController?.pushViewController(SvC!, animated: true) // Thread 1 CRASH


}

这告诉您SvC为零,这意味着此行失败:

let SvC = storyboard?.instantiateViewController(withIdentifier: "SongsPlayerViewController") as? SongPlayerViewController

我怀疑你没有分配情节提要标识符,或者拼错了它。

当您使用!时,就像在SvC!中一样,您告诉系统,如果值为零,您希望程序崩溃。这在这种代码中实际上相当有用,因为你可能会发现崩溃并显示问题所在比什么都不做要好。但是,您在一个没有帮助的地方应用!。如果您希望此代码在出现错误时崩溃,那么应该在分配SvC时使用as!而不是as?。这将在后续调用中消除所有?.,并使错误位置更加清晰。

相关内容

  • 没有找到相关文章

最新更新