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

Posted

技术标签:

【中文标题】swift - bgMusic - 致命错误:在展开可选值时意外发现 nil【英文标题】:swift - bgMusic - fatal error: unexpectedly found nil while unwrapping an Optional value 【发布时间】:2015-09-02 21:29:28 【问题描述】:

我在我的应用程序上发现了一个错误,但只有当应用程序在设备上运行时,如果应用程序使用模拟器运行,则不会生成错误。

我已将错误定位到背景音乐脚本,输出错误为fatal error: unexpectedly found nil while unwrapping an Optional value。我在这里查看了类似的问题,但没有找到任何补救措施。

谁能帮助修复我的代码?

    var bgMusicURL:NSURL = NSBundle.mainBundle().URLForResource("bgMusic", withExtension: "aif")!
    backgroundMusicPlayer = AVAudioPlayer(contentsOfURL: bgMusicURL, error: nil) //error here!!!
    backgroundMusicPlayer.numberOfLoops = -1
    backgroundMusicPlayer.prepareToPlay()
    backgroundMusicPlayer.play()

如果您需要更多代码,请告诉我。

谢谢。

【问题讨论】:

error:strong text nil 不是 Swift。那不可能是你真正的代码。显示你的真实代码。 抱歉,这是一个错字。编辑以更正代码。 准确解释 bgMusic.aif 应该如何进入应用程序包。 【参考方案1】:

您的 bgMusic.aif 文件是否已添加到您的目标?

如果不是,它可能在模拟器上可以正常播放,但在设备上则不行

【讨论】:

【参考方案2】:

仔细检查设备上的以下内容是否不为零:

NSBundle.mainBundle().URLForResource("bgMusic", withExtension: "aif")

强制解包 NSURL 的失败初始化是要求崩溃。您应该将值绑定到:

if let bgMusicURL = NSBundle.mainBundle().URLForResource("bgMusic", withExtension: "aif") 
    backgroundMusicPlayer = AVAudioPlayer(contentsOfURL: bgMusicURL, error: nil)
    backgroundMusicPlayer.numberOfLoops = -1
    backgroundMusicPlayer.prepareToPlay()
    backgroundMusicPlayer.play()

【讨论】:

但是您并没有解释为什么它在设备上而不是在模拟器上为零。

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

Swift 中的 UIView 子类:IBOutlet 在展开时发现为零

重新加载表数据时出现致命错误:展开为零:需要帮助

如何在 TableView 中重新加载数据

致命错误:索引超出范围:Swift

Swift 取消 ActivityViewController 会导致致命错误

Swift 致命错误:数组索引超出范围