在 Swift 中展开可选的崩溃
Unwrapping optional crash in Swift
我是新手,正在尝试了解调试,我遇到了一个挑战。 我已查询此问题的解决方案,但未在 Whosebug 中找到。我想更好地理解这里发生的事情以及为什么会发生崩溃。
我已经通过源代码中的打印语句找到了错误。我在这个函数的开头添加了一个打印语句,以确认正在到达该块。
@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!)!)!
错误显示
“Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value.”
所以,我知道使用 nil 值会使应用程序崩溃。我也知道我在这里使用可选项。我不知道下一步该怎么做。
该行的问题是,如果值 nil 或不是您强制转换的数据类型意味着应用程序将崩溃,您将强制取消扭曲值
不要强制展开,而是使用如下所示的可选展开
if sender.currentTitle != nil {
if let requiredIntValue = Int(sender.currentTitle!){
if let bugType = BugFactory.BugType(rawValue: requiredIntValue)?{
bugFactory.currentBugType = bugType
}
}
}
希望对您有所帮助
我是新手,正在尝试了解调试,我遇到了一个挑战。 我已查询此问题的解决方案,但未在 Whosebug 中找到。我想更好地理解这里发生的事情以及为什么会发生崩溃。
我已经通过源代码中的打印语句找到了错误。我在这个函数的开头添加了一个打印语句,以确认正在到达该块。
@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!)!)!
错误显示
“Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value.”
所以,我知道使用 nil 值会使应用程序崩溃。我也知道我在这里使用可选项。我不知道下一步该怎么做。
该行的问题是,如果值 nil 或不是您强制转换的数据类型意味着应用程序将崩溃,您将强制取消扭曲值
不要强制展开,而是使用如下所示的可选展开
if sender.currentTitle != nil {
if let requiredIntValue = Int(sender.currentTitle!){
if let bugType = BugFactory.BugType(rawValue: requiredIntValue)?{
bugFactory.currentBugType = bugType
}
}
}
希望对您有所帮助