好的,我正在使用 AVFoundation 来扫描条形码。然后扫描后转到另一个 View 。效果很好。然而,应用程序有时会崩溃。由于相机预览仍然显示,这是行不通的。我收到错误:
fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)
我相信这可能是因为它试图在尚未加载的情况下访问某些内容。如果我错了请纠正我。
所以,我要问的是如何解决这个问题?
如果有任何帮助,我也附上了该线程。
最佳答案
在 Swift 中,Optional 是一种特殊的泛型类型,它:
- 可以包含一个值
- 或者根本没有任何值(value)(nil)
变量只有在可选时才可以为 nil。您可以像这样声明一个可选:
let meaningOfLife:Int? = 42
问号?类型声明末尾的 表示变量meaningOfLife 是可选的。因此,这段代码是可以的:
meaningOfLife = nil
变量meaningOfLife是一个可选的,所以它可以是nil。
但是这个例子是无效的:
let age:Int = 99
age = nil // This line is not OK
因为年龄不是可选的,所以它不可能为零!
Options 是 Swift 的一个强大功能,因为它们使您的代码更安全且不易出错。因此, optional 可以提高开发人员的工作效率,因为您花在修复错误上的时间更少。
几乎每种编程语言都有类似 nil 的东西。 JavaScript 中未定义,Java 中为 null,PHP 中为 NULL。在这些语言中,为了避免没有值的变量出现运行时错误,您必须记住检查变量是否为空。这是你可能会忘记的事情......
Swift 以一种特殊的方式处理可选值:它强制开发人员检查变量是否为 nil(如果是可选值)。这称为展开。您需要先解开 optional ,然后才能使用它。
当您忘记打开可选内容时,您会在应用程序运行之前找到答案,这可以节省您的时间。这可以提高您的工作效率,并且减少代码中的错误。
与其他语言不同,Swift 将在编译时检查可选值是否正确解包。因此,在应用程序运行之前,当编译代码时,Swift 将检查代码中的每个 optional ,看看您是否已正确解包它。
不幸的是,有些错误无法被编译器捕获。这时你就会看到这个错误。
在您的应用运行时,在以下情况下会发生这种情况:
- 您已使用 ! 强制解开可选内容!
- 隐式解包的可选值为 nil
在强制解开可选值之前,使用 if 语句检查可选值是否为零。当可选值为 nil 时,不会执行大括号 { } 内的代码。
关于ios - fatal error : unexpectedly found nil while unwrapping an Optional value (lldb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33938090/