Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 音频播放器未初始化_Ios_Swift_Xcode - Fatal编程技术网

Ios 音频播放器未初始化

Ios 音频播放器未初始化,ios,swift,xcode,Ios,Swift,Xcode,我正在尝试“触摸”KikiAudioPlayer中的音频播放器。这是我的观点,我想这样做 class AudioBarView: UIView { @IBOutlet weak var playPauseButton: UIButton! @IBOutlet weak var nowPlayingSongLabel: UILabel! var kikiAudioPlayer = KikiAudioPlayer() @IBAction func

我正在尝试“触摸”KikiAudioPlayer中的音频播放器。这是我的观点,我想这样做

class AudioBarView: UIView {

    @IBOutlet weak var playPauseButton: UIButton!
    @IBOutlet weak var nowPlayingSongLabel: UILabel!
    
    var kikiAudioPlayer = KikiAudioPlayer()
    
    @IBAction func playPauseButtonPressed(_ sender: UIButton) {
        let playImage = UIImage(systemName: "play.fill")
        if playPauseButton.currentImage == playImage {
            playPauseButton.setImage(UIImage(systemName: "pause.fill"), for: .normal)
            kikiAudioPlayer.play()
        } else {
            playPauseButton.setImage(UIImage(systemName: "play.fill"), for: .normal)
            kikiAudioPlayer.pause()
        }
    }
}
这是“KikiAudioPlayer”的片段和音频播放器的声明

class KikiAudioPlayer: NSObject, AVAudioPlayerDelegate {

    var audioPlayer = AVAudioPlayer()

    func play() {
        audioPlayer.play()
        delegate?.audioPlayerPlayingStatusChanged(isPlaying: true)
        updater = CADisplayLink(target: self, selector: #selector(updateDelegate))
        updater.add(to: RunLoop.current, forMode: RunLoop.Mode.common)
        setWaiting(to: false)
    }
     func pause() {
        audioPlayer.pause()
        delegate?.audioPlayerPlayingStatusChanged(isPlaying: false)
        updater.invalidate()
        setWaiting(to: true)
    }

}
当按下按钮时,我的断点说。这意味着我按下按钮,一切都不会改变

po kikiAudioPlayer.audioPlayer <uninitialized>
po kikikiaudioplayer.audioPlayer

问题是,如果我创建了KikiAudioPlayer实例,为什么AudioBarView中的音频播放器未初始化

我没有向播放器提供任何资源(这并不重要),因为音频播放器工作正常,但问题是无法暂停播放


我曾尝试清理生成文件夹,但没有任何帮助。

我同意这一行代码:

var audioPlayer = AVAudioPlayer()
AVAudioPlayer没有将
init()
列为有效的初始值设定项。即使您可以在没有compliler警告的情况下使用它。官方文件显示了四个单独的初始值设定项,它们都至少有一个参数

我建议您查看此博客以了解更多信息


更新:答案比我想象的要简单。我删除了KikiAudioPlayer中音频播放器的声明,并将其添加到应用程序代理中

var audioPlayer: AVAudioPlayer!

我已经阅读了这篇文章,但我不明白我需要做什么来解决这个问题。将
var player=AVAudioPlayer()
更改为
var player:AVAudioPlayer?有帮助吗?我不知道你提供的代码片段的全部逻辑。是的,我以前做过,但没有帮助。