致命错误:在展开Optional值时意外发现nil

时间:2015-10-27 11:06:54

标签: swift avaudioplayer nsurl nsbundle audio-player

我尝试了一些基本的东西,比如播放音频。

在我运行项目的初期,我收到了一个错误,错误没有显示在视图控制器中,但是当我运行项目时它会立即弹出。

  

致命错误:在解包可选值时意外发现nil

我的代码:

var buttonAudioURL = try? NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Sound", ofType: "m4a")!)

1 个答案:

答案 0 :(得分:2)

使用NSBundle.mainBundle().pathForResource("Sound", ofType: "m4a")!,您强制解开NSBundle返回的Optional(请注意结尾处的!)。

因此,如果此资源“Sound.m4a”不可用,那么应用程序就会崩溃。

您需要做两件事:确保资源在捆绑中,并使用安全解包和错误处理而不是强制解包。

我强烈建议您阅读Apple为我们提供的button_to,所有这些都会详细解释。

另请注意,NSURL不会抛出,因此您不必使用try

<强>更新

这是我正在谈论的一个例子:

if let soundResourceURL = NSBundle.mainBundle().pathForResource("Sound", ofType: "m4a") {
    let buttonAudioURL = NSURL(fileURLWithPath: soundResourceURL)
    // use buttonAudioURL here
} else {
    print("Unable to find Sound.m4a")
}