iOS声音不能在Swift中播放

我build立了一个tableview,其中每个单元格表示用户点击该特定单元格时播放的声音。

在Objective-C中,它工作的很好,但是现在苹果发布了Swift,我决定立即移动,但由于某种原因声音无法播放。 我的代码当用户点击单元格时:

func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) { var currentItem = self.items[indexPath.row] var audioPath = NSString(string: NSBundle.mainBundle().pathForResource(currentItem.soundID, ofType: "mp3")) println(audioPath) var audioPlayer = AVAudioPlayer(contentsOfURL: NSURL(string: audioPath), error: nil) audioPlayer.play() } 

currentItem是数组中必须被调用的对象。 我可以播放的每个声音都放在一个自定义对象中,同时还有一个标题和一个图像。 该对象被放在currentItem一个实例中。

这是printNL输出我的一个单元格时输出的内容:

 /private/var/mobile/Containers/Bundle/Application/ADF0CAFC-4C9E-475E-B3F0-CD85A1873CA5/Juichen.app/StupidQuestion.mp3 

它不会给出错误。 我已经尝试将声音文件移动到其他文件夹,但是这也不能解决问题。 因此,我认为发生这个问题是因为我正在调用audioPlayer不正确?

任何帮助将不胜感激!

假设你有一个类myTable:

 class myTable : UITableViewController { var audioPlayer:AVAudioPlayer? = nil ... } 

并初始化audioPlayer

 func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) { var currentItem = self.items[indexPath.row] var audioPath = NSString(string: NSBundle.mainBundle().pathForResource(currentItem.soundID, ofType: "mp3")) println(audioPath) var error : NSError? = nil self.audioPlayer = AVAudioPlayer(contentsOfURL: NSURL(string: audioPath), error: &error) if (self.audioPlayer == nil) { if let playerError = error as? NSError { let des : String? = playerError.localizedDescription println("Error: \(des)") } } else { self.audioPlayer.play() } } 

希望这可以帮助。