SWIFT中的audioPlayerDidFinishPlaying函数

Sop*_*man 1 iphone avfoundation ios swift

我正在使用AVFoundation框架在swift中编写一个简单的播放器.除了我的播放器一遍又一遍地播放同一首歌之外,一切似乎都在起作用.我的播放列表中只有一首歌,所以这很有道理.我要做的是检查audioPlayerDidFinishPlaying标志,以确保它已完成播放,然后我会让它停止.我不确定如何实现调用以获取此处的标志是我的代码.

    mp3Player?.play()
    **if (mp3Player?.audioPlayerDidFinishPlaying:successfully) {**
    mp3Player?.stop()
 }
Run Code Online (Sandbox Code Playgroud)

在目标c中获取标志的正确方法是:

    - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
NSLog(@"audioPlayerDidFinishPlaying");
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释如何在SWIFT中实现相同的功能吗?这是我在SWIFT的第一个项目.我尝试在SWIFT中阅读有关void函数的内容,但没有运气.

我得到的错误是无法将'AVAudioPlayer.Type'类型的值转换为预期的参数类型'AVAudioPlayer'

deo*_*hal 5

您可以在开始播放音频numberOfLoops设置时进行交叉检查,0delegate设置为self播放器正在播放的控制器.

   mp3Player?.numberOfLoops = 0
   mp3Player?.delegate = self
Run Code Online (Sandbox Code Playgroud)

在同一个类中实现如下所示的delegate方法AVAudioPlayer.

func audioPlayerDidFinishPlaying(player: AVAudioPlayer!, successfully flag: Bool) {
    //You can stop the audio 
    player.stop()

} 
Run Code Online (Sandbox Code Playgroud)