如何使用Swift初始化AVAudioPlayer

问题描述:

我在Xcode 6.1中使用Swift和SpriteKit创建了一个游戏,并且我不能使用 使AVAudioPlayer初始化。我有一个SKScene用于我的菜单,而我 想要在名为“menu.mp3”的“声音”文件夹中运行音乐。但是,每当我运行我的游戏时,它就会崩溃。我的代码如下:如何使用Swift初始化AVAudioPlayer

let filePath:NSURL = NSURL(fileURLWithPath: "menu.mp3")! 
var er:NSError? 
let audioPlayer:AVAudioPlayer = AVAudioPlayer(contentsOfURL: filePath, error: &er) 

if (er != nil) { 
} else { 
    audioPlayer.play() 
} 

我把这个在我的初始化我super.init电话之后。我得到的错误如下:

fatal error: unexpectedly found nil while unwrapping an Optional value 

我已经尝试了很多修正,但我想不出什么错误。 我已经添加了AVFoundation框架并将其导入到这个场景中,但它仍然崩溃。我的文件路径 有什么问题,导致我的音频播放器无法初始化?我试过 切换到其他方式,使不同的部分可选,但我 不能让它工作。谢谢!

let documentsUrl = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first as NSURL 
func preparePlayer(name:String){ 
    var error:NSError? 

    let fileUrl = documentsUrl.URLByAppendingPathComponent(name) 
// or 
// let fileUrl = NSBundle.mainBundle().bundleURL.URLByAppendingPathComponent(name) 

    let audioPlayer = AVAudioPlayer(contentsOfURL: fileUrl, error: &error) 
    if error == nil { 
     audioPlayer.play() 
    } 
} 
override func viewDidLoad() { 
    super.viewDidLoad() 
    preparePlayer("menu.mp3") 
}