-3

我是新手,试图了解调试,我正在解决一个挑战。我已查询此问题的解决方案,但未在 StackOverflow 中找到。我想更好地了解这里发生了什么以及为什么会发生这种崩溃。

我已经通过源代码中的打印语句找到了这个错误。我在此函数的开头添加了一条打印语句,以确认正在到达该块。

@IBAction func bugTypeSelected(_ sender: UIButton) {
    print("bugTypeSelected reached")
    bugFactory.currentBugType = BugFactory.BugType(rawValue: Int(sender.currentTitle!)!)!
    self.dismiss(animated: true, completion: nil)
}

当我运行应用程序并单击设置模式中的错误之一时,打印语句将打印到控制台,然后应用程序崩溃。Xcode 告诉我问题出在这一行:

bugFactory.currentBugType = BugFactory.BugType(rawValue: Int(sender.currentTitle!)!)!

错误读取

“线程 1:致命错误:在展开可选值时意外发现 nil。”</p>

所以,我知道使用 nil 值会使应用程序崩溃。我也知道我在这里使用选项。我被困在下一步该怎么做。

4

1 回答 1

0

该行的问题是,如果值 nil 或不是您强制进行种姓的数据类型意味着应用程序将崩溃,那么您将被迫解开值

而不是强制展开使用可选的展开,如下所示

if sender.currentTitle != nil {
  if let requiredIntValue = Int(sender.currentTitle!){
    if let bugType = BugFactory.BugType(rawValue: requiredIntValue)?{
       bugFactory.currentBugType = bugType
    }
  }
}

希望对你有帮助

于 2017-11-28T11:07:52.630 回答