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() } }
希望这可以帮助。