如何检查AVAudioPlayer仍在运行?

时间:2015-12-23 09:11:25

标签: ios objective-c swift uiviewcontroller avaudioplayer

我正在使用AVAudioPlayer,在我的 viewdidload 方法中,最初运行良好,但是当我再次进入相同的视图控制器时,歌曲开始与初始歌曲混合。

所以我想知道这首歌是在后台运行的吗?

这是我的功能,我正在调用此函数进入视图加载

func prepareAudio()
    {
        if audioPlayer.playing
        {
            audioPlayer.stop()
        }
        do
        {

                audioPlayer=try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Kids", ofType: ".mp3")!), fileTypeHint: AVFileTypeMPEGLayer3)
                audioPlayer.delegate=self;
                self.audioPlayer.play()

        }
        catch
        {
            print(error)
        }

    }

但是我正试图在这里遇到崩溃 的 if audioPlayer.playing

帮我找到解决方案..

第二次尝试

enter image description here

第3次尝试

enter image description here

第四次尝试

enter image description here

2 个答案:

答案 0 :(得分:1)

if let audioPlayer = audioPlayer where audioPlayer.playing {
   audioPlayer.stop()
}

// create your audio player and set the delegate etc.

但是我鼓励你,如果audioPlayer不是nil,你不应该总是再次启动audioPlayer。

if let audioPlayer = audioPlayer {
   if audioPlayer.playing {
      audioPlayer.stop()
   }
} else {
   // setup the audioPlayer and set the delegate
}

audioPlayer?.play()

答案 1 :(得分:0)

您必须检查变量是否仍然有效(if not nil

试试这个

if ((!audioPlayer) && (audioPlayer.playing == YES))
{
    audioPlayer.stop()
}