我想使用我在网上找到的名为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}}
我哪里错了?感谢
答案 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")!)
])
我也不是很快 - 但也许这会有所帮助。