AVAudioPlayer not playing audio in Swift
avaudioplayer, avfoundation, cocoa-touch, ios, swift
Solution
There's so much wrong with your code that Socratic method breaks down; it will probably be easiest just to throw it out and show you:
var player : AVAudioPlayer! = nil // will be Optional, must supply initializer
@IBAction func playMyFile(sender: AnyObject?) {
let path = NSBundle.mainBundle().pathForResource("audioFile", ofType:"m4a")
let fileURL = NSURL(fileURLWithPath: path)
player = AVAudioPlayer(contentsOfURL: fileURL, error: nil)
player.prepareToPlay()
player.delegate = self
player.play()
}
I have not bothered to do any error checking, but the upside is you'll crash if there's a problem.
One final point, which may or may not be relevant: not every `m4a` file is playable. A highly compressed file, for example, can fail silently (pun intended).
Problem
I have this code in a very simple, single view Swift application in my `ViewController`: ``` var audioPlayer = AVAudioPlayer() @IBAction func playMyFile(sender: AnyObject) { let fileString = NSBundle.mainBundle().pathForResource("audioFile", ofType: "m4a") let url = NSURL(fileURLWithPath: fileString) var error : NSError? audioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error) audioPlayer.delegate = self audioPlayer.prepareToPlay() if (audioPlayer.isEqual(nil)) { println("There was an error: (er)") } else { audioPlayer.play() NSLog("working") } ``` I have added `import AVFoundation` and `audioPlayer` is a global variable. When I execute the code, it does print "working", so it makes it through without errors but no sound is played. The device is not in silent.