Swift 正在播放来自 url 的音频

Swift audio playing from url

import AVFoundation
import UIKit

class ViewController: UIViewController {

    @IBOutlet var button: UIButton!

    var player: AVPlayer?
    var playerItem:AVPlayerItem?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func didTapButton(urlRadio: String){
        if let player = player, player.isMuted{
            //stop playback
        }
        else{


            do {
                try AVAudioSession.sharedInstance().setMode(.default)
                try AVAudioSession.sharedInstance().setActive(true, options: .notifyOthersOnDeactivation)

                guard let urlRadio = URL.init(string: "http://live.shtorm.fm:8000/mp3_rushtorm") else {
                    return
                }
            
                let playerItem:AVPlayerItem = AVPlayerItem.init(url: urlRadio)
                player = AVAudioPlayer.init(playerItem: playerItem)
                

            }

            catch {
                print("something went wrong")
            }
        }
    }
}

显示错误 异常 NSException *“-[RozetkaRadio.ViewController didTapButton]:无法识别的选择器发送到实例 0x7ff070f07a50”0x00006000008c7210 在模拟器中按下按钮后

使用故事板

您的问题出在这行代码上。具体来说,参数urlRadio.

@IBAction func didTapButton(urlRadio: String){

您似乎更改了 Storyboard 中设置的标准 IBAction。您无法更改 IBAction 中的参数,因为故事板不再识别将点击发送到何处。

您的 IBAction 应如下所示

@IBAction func didTapButton(_ sender: Any)

每当您看到发送到实例的无法识别的选择器时,您应该立即想到“我的故事板和我的 ViewController 之间有些东西没有正确连接”

一种快速查看方法是在故事板上右键单击您的控制器场景名称。您可以看到我注释掉了 SignIn IBAction 函数。如果我想删除它,我还必须删除故事板上的连接。你可以看到故事板会通过留下黄色警告标签让我知道。