SIGABRT error with segue.destination in swift



我正在尝试创建一个排行榜,但是我在下面的行中遇到了一个sigabrt错误(我在上面评论了导致错误的行上的评论)。我按下完成按钮后立即崩溃,该按钮应该将其转移到排行榜上(这是一个表视图)

var yourScore = 0
class secondVC: UIViewController {
@IBOutlet weak var scoreLabel: UILabel!
@IBOutlet weak var nameTF: UITextField!
@IBOutlet weak var doneButton: UIButton!
@IBAction func donePressed(_ sender: Any) {
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
//SIGABRT error
    let secondVC = segue.destination as! leaderboardVC
    secondVC.tempNumber = yourScore
    secondVC.tempName = nameTF.text ?? "Player"
    secondVC.organise()
}
override func viewDidLoad() {
    super.viewDidLoad()
    scoreLabel.text = "Your score is: (yourScore)"    
}
}

您可以使用SEGUE标识符来跟踪问题

if segue.identifier == "name" { 
  if let secondVC = segue.destination as? leaderboardVC {
     print("ok")
  }
  else {
     print(segue.destination)
  }
} 

一个常见的问题是您错过了在IB

中设置类名称

Controller排行榜VC没有segue。当您强迫将SEGUE的目的地包裹在准备方法中时,崩溃发生。请检查segue是否存在。

,并始终使用可选的链接以防止坠机为:

if let destinationVC = segue.destination as? leaderboardVC {
 print("ok")
}

您可以通过打印segue.destination的值来调试问题。

这是您可以做到这一点的几种方法:

1。)在完成按钮上的右键单击并删除座断式/未使用的连接。

2。)单击辅助ViewController的EventList。(查找视图 - 右键在控制器顶部的黄色圆圈上 - 找到未使用/无关的连接并删除它们!

3。)添加一个断点以检查错误的位置。并编辑您的线程,其中错误是

4。)DoubleCheck的标识符。确保您像写的那样进入狂热。

我99%肯定您在ViewController 1或2上与连接搞砸了一些东西。因此,请仔细检查一下!

如果这不起作用。粘贴您的错误,我会为您提供帮助。祝你好运。

最新更新