致命错误:使用AVAudio展开Optional值时意外发现nil

时间:2014-12-25 21:32:10

标签: ios xcode audio swift avfoundation

我有两个项目,使用相同的代码,但是以下一行:

player = AVAudioPlayer(contentsOfURL: NSURL(string: fileLocation), error: &error)

仅在其中一个项目中返回此错误:

fatal error: unexpectedly found nil unwrapping an Optional value

另一个项目没有错误运行。

我正试着播放声音。

import UIKit
import AVFoundation


class ViewController: UIViewController {


    var player:AVAudioPlayer = AVAudioPlayer()

    override func viewDidLoad() {
        super.viewDidLoad()
        var fileLocation =  NSString(string: NSBundle.mainBundle().pathForResource("halloweenmp3", ofType: "mp3")!)

        var error: NSError? = nil

        player = AVAudioPlayer(contentsOfURL: NSURL(string: fileLocation), error: &error)

        player.play()


}

在两个项目中,相同的mp3文件已添加到项目中,但一个项目将播放声音,而另一个项目将返回错误。

给我错误的项目确实有其他代码,但错误似乎只与上面提到的行有关,所以我不知道项目中的另一部分代码是如何引起它的。

我尝试复制容易出错的项目并获得相同的结果。我已经创建了新项目并使用上面使用的相同代码并使其工作。我不确定项目是否以某种方式被破坏,或者项目中的其他一些代码是否导致错误,即使它未在调试器中被引用。

我可以在xCode中的文件导航器中预览mp3文件,这样它就可以了。

2 个答案:

答案 0 :(得分:3)

NSURL(String:)更改为NSURL(fileURLWithPath:)对我有用。

答案 1 :(得分:1)

你可以这样做:

  1. 在项目视图中,单击您的项目名称
  2. 选择目标并选择“构建阶段”选项卡
  3. 将您的mp3文件拖到“Copy Bundle”中 资源“部分