ios - fatal error : unexpectedly found nil while unwrapping an Optional value (lldb)

标签 ios swift

好的,我正在使用 AVFoundation 来扫描条形码。然后扫描后转到另一个 View 。效果很好。然而,应用程序有时会崩溃。由于相机预览仍然显示,这是行不通的。我收到错误:

fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)

我相信这可能是因为它试图在尚未加载的情况下访问某些内容。如果我错了请纠正我。

所以,我要问的是如何解决这个问题?

如果有任何帮助,我也附上了该线程。

image of thread

最佳答案

在 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/

相关文章:

iphone - 象征崩溃日志

iphone - 为什么以及何时应该在 iOS 应用程序中使用 C/C++ 代码?

ios - UINavigationBar contentMode 未设置

ios - 在 Xcode 中将 View Controller 连接到侧边栏

ios - 如何在 ios 中的 Ionic 1/Ionic 2 应用程序中验证应用程序购买收据?

ios - 如何在 Interface Builder 中使用 QLPreviewController?

ios - 将推送通知功能添加到您的 App ID 错误

ios - SpriteKit 和 swift : Changing size of scrolling ground node depending on screen size does not work

ios - 防止 UITableView 滚动到某个点以下

带有 Swift 3 和 pod 的 iOS 构建大小