如何调试'致命错误:在解包可选值时意外发现nil'

Ric*_*ton 14 iphone ios swift

Stack Overflow上存在很多与此错误相关的问题.我已经阅读了一些关于Optionals如何工作以及特别是这个错误的优秀帖子.但是,我没有找到任何关于最佳方法的信息,以确定哪个值被设置为nil并首先导致错误.

有没有什么好的调试技术可以找出哪个Optional导致了这个错误?

mar*_*rco 34

这里至少有一半答案(其他受访者请先阅读问题!):使用模拟器代替实际的iOS设备.

调试器似乎非常擅长指向使用maltreated的可选项导致问题...除非你像我一样,选择直接在iOS设备上运行代码.在后一种情况下,调试器将我置于一些汇编代码的中间,没有合理的堆栈跟踪.切换回模拟器会给出确切的代码行.

  • 这是我需要知道的.我得到了*问题是什么,但是我需要弄清楚*问题在哪里才能解决问题,并且在盲目猜测时我没有设置任何断点. (2认同)

Duy*_*Hoa 0

你的 Xcode 不会在错误的代码行处崩溃吗?

这并不能回答问题,但值得注意的是:

When you are not sure about an optional variable, you have to verify if it contains value or not, by using a pattern like this:

var myOptional : String?
if let aString = myOptional {
    //do your work with aString.
}
Run Code Online (Sandbox Code Playgroud)