奇怪的“致命错误:在展开可选值时意外发现 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”的主要内容,如果未能解决你的问题,请参考以下文章
@IBInspectable 致命错误:在展开可选值时意外发现 nil