线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x48)avaudiofoundation

时间:2019-10-09 23:04:35

标签: ios xcode avfoundation swift5

当我尝试运行我的代码时,我在代码中上面标题中的错误提示

  

audioPlayer =尝试AVAudioPlayer(contentsOf:url)

在我将Xcode更新为Xcode 11之前,此代码就像一个魅力一样工作,现在使用Swift 5,我不得不对其进行更改,现在它不起作用。有人可以帮帮我吗?这是我的代码

import UIKit
import AVFoundation

class ViewController: UIViewController, AVAudioPlayerDelegate {

override func viewDidLoad() {
    super.viewDidLoad()

    playAudio()

}

@IBAction func playButton(_ sender: Any) {
playAudio()
}


var indexPath = 0
var listOfTheSongs = ["badLiar.mp3", "cool.mp3", "eastSide.mp3", "fallinAllInYou.mp3", "hateHowMuchILoveYou.mp3", "inMyBlood.mp3", "letMeDownSlowly.mp3", "loveYourself.mp3", "panini.mp3", "rewriteTheStars.mp3", "stiches.mp3", "treatYouBetter.mp3", "wow.mp3"]
 var audioPlayer = AVAudioPlayer()
 var path = Bundle.main.path(forResource: "badLiar.mp3" , ofType: nil , inDirectory: "Songs For Lyric Hunt")!


func playAudio () {

    if path != nil {
        print("path does not equal nil")
        let url = URL(fileURLWithPath: path)
        do {
            audioPlayer = try AVAudioPlayer(contentsOf: url)
            if audioPlayer.isPlaying == true {
            audioPlayer.stop()
            } else {
                audioPlayer.play()
            }
        } catch {
            // couldn't load file :(
            print("counldn't load file :(")
        }
    }else {
        print(" path equals to nil")

        }
    }



}

2 个答案:

答案 0 :(得分:1)

参考此answer,您需要像下面那样初始化AVAudioPlayer:

var audioPlayer: AVAudioPlayer!

用上面的行替换您的var audioPlayer = AVAudioPlayer()

这应该可以解决崩溃问题。似乎是iOS 13.1出现了问题

答案 1 :(得分:0)

您是否已将框架添加到项目中?  如果没有,请尝试

在游戏/应用程序的常规标签中

框架,库和嵌入式内容 单击 + 并键入或搜索AVFoundation.framework

希望有帮助