奇怪的“致命错误:在展开可选值时意外发现 nil”

Posted

技术标签:

【中文标题】奇怪的“致命错误:在展开可选值时意外发现 nil”【英文标题】:Weird "fatal error: unexpectedly found nil while unwrapping an Optional value" 【发布时间】:2015-02-22 13:57:04 【问题描述】:

我的 ViewController 中有 6 个 UIImageView。我还为他们分配了轻击手势。当用户点击图片时,会执行 segue。

我将那些 ImageViews 添加到数组中,这就是应用崩溃的地方:

@IBOutlet weak var p0: UIImageView!
@IBOutlet weak var p1: UIImageView!
@IBOutlet weak var p2: UIImageView!
@IBOutlet weak var p3: UIImageView!
@IBOutlet weak var p4: UIImageView!
@IBOutlet weak var p5: UIImageView!

var playlistArray: [UIImageView] = []

override func viewDidLoad() 
    super.viewDidLoad()

    playlistArray += [p0, p1, p2, p3, p4, p5] // App crashes here

    for index in 0..<playlistArray.count 
        let playlist = Playlist(index: index)
        let playlistImageView = playlistArray[index]

        playlistImageView.image = playlist.icon
        playlistImageView.backgroundColor = playlist.backgroundColor
    

我收到一个错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

我做错了什么?所有ImageViews 都已连接。

请注意,我正在关注一个教程,其中代码实际上是 同样,因此将 ImageView 添加到数组的方法 - 这是一个 初级课程。

我已经设置了一个断点,并且我确信 没有一个 ImageViews 是 nil。 它们都已正确连接

编辑:

我已经上传了我的项目。如果有人有时间,我会很感激看看那里可能有什么问题: https://www.dropbox.com/s/fj0tgi9st2xr7y5/s_PlaylistBrowser.zip?dl=0

【问题讨论】:

在该行设置断点并验证所有图像视图不为零 - 我的猜测是至少有一个没有连接。 @Antonio 验证所有 *imageViews ? [p0, p1, p2, p3, p4, p5] 中的一个或多个为 nil。这很可能是因为它们实际上没有正确连接,或者可能是因为您在其他地方有代码将其中一个或多个设置为 nil。 【参考方案1】:

我查看了您的代码。 基本上,您错过了DetailsViewController 中的标签连接。 因为该程序仅在您尝试执行转场时才会崩溃。 不过,我不知道它为什么指向你提到的那条线。

【讨论】:

【参考方案2】:

您写道:“我做错了什么?所有的 ImageView 都已连接。”

这是初学者的错误。有一个问题,你假设你做的一切都是正确的。但应该是常识,你没有没有做所有事情 - 如果你做了,你的代码就会工作!

你应该自动问自己的问题是:我做错了什么。我做错了什么?如果您问自己这个问题,那么很明显崩溃点和 p0、p1、p2、p3、p4 或 p5 之一为 nil 的错误消息是显而易见的。

【讨论】:

以上是关于奇怪的“致命错误:在展开可选值时意外发现 nil”的主要内容,如果未能解决你的问题,请参考以下文章

Swift 错误致命错误:在展开可选值时意外发现 nil

@IBInspectable 致命错误:在展开可选值时意外发现 nil

为啥我收到错误:致命错误:在展开可选值时意外发现 nil?

Swift:致命错误:在展开可选值时意外发现 nil

swift 2 致命错误:在展开可选值时意外发现 nil - 类别名称

Firebase 数据库 - 致命错误:在展开可选值时意外发现 nil