"Cannot convert value of type 'AVAudioPlayer.Type' to expected argument type"

"Cannot convert value of type 'AVAudioPlayer.Type' to expected argument type"

我在播放 audioPlayerDidFinish 函数时遇到问题。我已将 AVAudioPlayerDelegate 添加到我的视图控制器 class 并定义了函数。当我调用该函数时出现错误 "Cannot convert value of type 'AVAudioPlayer.Type' to expected argument type" 我做错了什么?让我知道是否需要添加更多代码供您查看。

    func buttonPressed() {
    if currentSound == sound {
        currentSound = "None"
        activateBlankCircle()
        audioPlayer.stop()
    }
    else {
        currentSound = sound
        audioPlayer.prepareToPlay()
        activateRedCircle()
        playSound()
        audioPlayerDidFinishPlaying(AVAudioPlayer, successfully: Bool)
        //Cannot convert value of type 'AVAudioPlayer.Type' to expected argument type

    }

}

委托方法不应由委托本身调用。

audioPlayerDidFinishPlaying 这里是委托方法。您应该实现它(您已经拥有)并将 self 设置为音频播放器的代表。该方法将在适当的时间由 AVAudioPlayer 调用,即当它完成播放声音时。

所以您应该删除对 audioPlayerDidFinishPlaying 的调用,一切都会正常进行。从外观上看,您正在实现一个 start/stop 播放按钮。如果你想在播放器结束时做一些事情,你可以将self设置为viewDidLoad中的audioPlayer.delegate。并且该方法将在播放完声音时被调用。