iOS Swift 2.0 - AvAudioPlayer не воспроизводит звук

В последнее время я столкнулся с проблемой при использовании бета-версии Xcode (7.0). Я не слышу звук, который я воспроизвожу через этот код: (это ViewController из Main.storyboard, есть кнопка, подключенная к buttonTouchUpInside())

import UIKit
import AVFoundation

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func setupAudioPlayerWithFile(file:NSString, type:NSString) -> AVAudioPlayer  {
    let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String)
    let url = NSURL.fileURLWithPath(path!)
    var audioPlayer:AVAudioPlayer?

    do {
        try audioPlayer = AVAudioPlayer(contentsOfURL: url)
    } catch {
        print("NO AUDIO PLAYER")
    }

    return audioPlayer!
}

@IBAction func buttonTouchUpInside(sender: AnyObject) {
    let backMusic = setupAudioPlayerWithFile("sound", type: "wav")
    backMusic.play()
}

}

person Frederik Witte    schedule 16.06.2015    source источник
comment
Ваш код дает сбой? Причина, по которой вы не слышите, заключается в том, что AVPlayer не сохраняется, вы создаете его и называете его play, но он не остается. Просто создайте свойство для backMusic, и оно должно работать нормально.   -  person Sandeep    schedule 16.06.2015
comment
Код не вылетает. Я попробую это, спасибо.   -  person Frederik Witte    schedule 16.06.2015


Ответы (1)


Вам просто нужно переместить объявление backMusic из вашего IBAction:

Попробуйте так:

class ViewController: UIViewController {

    var backMusic: AVAudioPlayer!
    // ...
    @IBAction func buttonTouchUpInside(sender: AnyObject) {
        backMusic = setupAudioPlayerWithFile("sound", type: "wav")
        backMusic.play()
    }
}
person Leo Dabus    schedule 16.06.2015
comment
Просто чтобы сделать решение Leo еще более ясным, вы не можете объявить AVAudioPlayer локальной переменной, иначе она будет удалена при выходе из этой области, прежде чем она сможет что-либо воспроизвести. - person SafeFastExpressive; 05.05.2016
comment
спас мой день. Большое спасибо. - person Rathna Kumaran; 29.06.2017