I'm using AVMIDIPlayer in macOS. The .play function takes a completion handler, AVMIDIPlayerCompletionHandler
, which is a typealias for Void
.
My code is:
var viewMIDIPlayer: AVMIDIPlayer?
@IBAction func backToStart(_ sender: Any) {
if viewMIDIPlayer != nil {
viewMIDIPlayer!.stop()
viewMIDIPlayer!.currentPosition = TimeInterval(0)
playButton.state=NSControl.StateValue(rawValue: 1)
viewMIDIPlayer!.prepareToPlay()
viewMIDIPlayer!.play(self.completed())
}
}
func completed() -> AVMIDIPlayerCompletionHandler {
if self.viewMIDIPlayer!.currentPosition == self.viewMIDIPlayer!.duration {
self.playButton.state=NSControl.StateValue(rawValue: 0)
return
}
}
What I get is an error that the function in .play is unused, and an error in the function itself "Non-void function should return a value".
If I try return Void
or return nil
, or return 0
, I get type errors. Also this:
I've also tried something like:
viewMIDIPlayer!.play(self.completed?: (AVMIDIPlayerCompletionHandler) -> ())
but that just makes matters worse.
I dare say this is something super obvious like more punctuation, but I've got no idea. Thanks.