Slider 如果在播放歌曲之前按下音量滑块,如何阻止音量滑块使音乐播放器崩溃?

Slider 如果在播放歌曲之前按下音量滑块,如何阻止音量滑块使音乐播放器崩溃?,slider,swift2,avaudioplayer,Slider,Swift2,Avaudioplayer,我肯定我在问一个简单的问题,但我才刚刚开始编码。。。所以可怜我吧!我在Xcode 7 Swift 2上。音乐播放器为AVAudioPlayer类型。如果在按下播放按钮之前启动应用程序并移动音量滑块(类型为UISlider),则会使应用程序崩溃,而在按下播放按钮后,即使音乐暂停,也能正常工作。我知道原因是因为volumeSlider func中的“MusicLayer.playing”。我尝试了许多If语句(例如“If musicPaused等”),但无法使其正常工作。感谢您的帮助。这是音量滑块函

我肯定我在问一个简单的问题,但我才刚刚开始编码。。。所以可怜我吧!我在Xcode 7 Swift 2上。音乐播放器为AVAudioPlayer类型。如果在按下播放按钮之前启动应用程序并移动音量滑块(类型为UISlider),则会使应用程序崩溃,而在按下播放按钮后,即使音乐暂停,也能正常工作。我知道原因是因为volumeSlider func中的“MusicLayer.playing”。我尝试了许多If语句(例如“If musicPaused等”),但无法使其正常工作。感谢您的帮助。这是音量滑块函数:

@IBAction func volumeSliderChanged(sender: AnyObject) {
    musicPlayer.playing
    musicPlayer.volume = volumeSlider.value
}
这是游戏功能:

 @IBAction  func playPause(sender: AnyObject) {
    var items = toolbar.items!

    if musicPaused == false {
        playPauseBtn = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Pause, target: self, action: "playPause:")
        items[0] = playPauseBtn
        toolbar.setItems(items, animated: true)
        musicPlayer.play()
        musicPaused = true
    }
    else{
        var items = toolbar.items!
        playPauseBtn = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: "playPause:")
        items[0] = playPauseBtn
        toolbar.setItems(items, animated: true)
        musicPlayer.pause()
        musicPaused = false
    }
}

@IBAction func playPauseButton(sender: UIButton) {
    let playBtn = sender as UIButton
    if toggleState == 1 {

        if isPlaying {
            musicPlayer.play()

        }else{

            playMusic()
        }

        toggleState = 2
        playBtn.setImage(UIImage(named:"100_pause.png"),forState:UIControlState.Normal)

    } else {

        musicPlayer.pause()
        toggleState = 1
        playBtn.setImage(UIImage(named:"100_play-arrow.png"),forState:UIControlState.Normal)
    }
}
这是我的MusicLayer宣言:

var musicPlayer: AVAudioPlayer = AVAudioPlayer()

如果您包含声明“musicPlayer”的代码,这会有所帮助。 崩溃后,错误日志显示了什么

我建议使用MPVolumeView类来控制您的音频。它应该可以控制设备的音量,这正是我认为您需要的。我已将类似问题附加到其他人的帖子上。
来源:

Hi,谢谢你的回复。我编辑了帖子并添加了声明。错误显示为行“MusicLayer.playing”,线程1:EXC\u BAD\u访问(代码=1,地址=0x38)