如何使用带有swift的API Jukebox在应用上流式传输音乐?

时间:2016-04-05 19:05:49

标签: ios swift

我想使用我在网上找到的名为Jukebox的图书馆将音乐流式传输到我的应用程序。下面是他们页面的链接:https://github.com/teodorpatras/Jukebox

@IBAction func Play(sender: UIButton) {
    self.jukebox.play()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

我在收到错误消息时表示' Jukebox(委托:自我'声明我无法将类型' ViewController'的值转换为预期的参数类型' JukeboxDelegate?'

{{1}}

我哪里错了?感谢

2 个答案:

答案 0 :(得分:1)

我的猜测是你未能在类声明中继承Jukebox委托。应该是这样的:

class ViewController: UIViewController, JukeboxDelegate {

    var jukebox = Jukebox()


    override func viewDidLoad() {
       super.viewDidLoad()
       // Do any additional setup after loading the view, typically from a nib.

    self.jukebox = Jukebox(delegate: self, items: [ JukeboxItem(URL: NSURL(string: "http://mixtapemonkey.com/mixtapes/zip/491/Chance%20The%20Rapper%20-%2010Day%20Official%20Final/03%20Nostalgia.mp3")!)
    ])
    }
}

由于这些委托方法不是可选的,因此您还必须通过包含下面列出的委托方法使ViewController符合委托。

  

定义Jukebox可能存在的五种状态。

public protocol JukeboxDelegate : class {
    func jukeboxStateDidChange(jukebox : Jukebox)
    func jukeboxPlaybackProgressDidChange(jukebox : Jukebox)
    func jukeboxDidLoadItem(jukebox : Jukebox, item : JukeboxItem)
}

库似乎是用Swift编写的,除非你付出额外的努力,委托方法不能是可选的,这就是为什么你得到关于VC的错误不符合方法的原因。你至少必须在你的班级中拥有方法签名,而且你是否希望在他们被召唤时发生任何事情都取决于你。

答案 1 :(得分:0)

我不知道Jukebox - 但是有些东西不能用于你的ViewController。您的ViewController是一个类而不是类实例。您需要先创建此控制器的实例。

也许在这个方向上的某些事情有所帮助..但我在Swift中也不是很好。

let VCJukeBox = UIViewController()?

VCJukeBox.jukebox = Jukebox(delegate: self, items: [ JukeboxItem(URL: NSURL(string: "yoururl.mp3")!)
    ])

我也不是很快 - 但也许这会有所帮助。