【发布时间】:2017-09-13 03:29:07
【问题描述】:
我正在尝试构建一个音乐应用程序。音乐播放得很完美,但是当音乐播放完时,它没有播放下一首歌曲。我正在寻找这个解决方案。当我尝试一些解决方案时,会给我错误。
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序, 原因:'-[Shironamhin.MusicPlayer playerDidFinishPlaying:]: 无法识别的选择器发送到实例 0x17003d960
我一直在尝试这种方式
class MusicPlayer: NSObject {
static let player = MusicPlayer()
//this is global variable
var player : AVPlayer?
var playerItem:AVPlayerItem?
func initPlayer(){
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
print("AVAudioSession Category Playback OK")
do {
try AVAudioSession.sharedInstance().setActive(true)
print("AVAudioSession is Active")
} catch let error as NSError {
print(error.localizedDescription)
}
} catch let error as NSError {
print(error.localizedDescription)
}
}
func playMusic(_ musicUrl: String?) {
if let mm = musicUrl {
var url: URL!
url = URL(string: mm)
playerItem = AVPlayerItem(url: url)
player = AVPlayer(playerItem: playerItem)
player?.volume = 1.0
player?.rate = 1.0
player?.play()
NotificationCenter.default.addObserver(self, selector: Selector(("playerDidFinishPlaying:")), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: playerItem)
}
func playerDidFinishPlaying(note: NSNotification) {
print("call")
}
}
}
另外我该如何实现这个 playerDidFinishPlaying??
【问题讨论】:
-
你应该把
playerDidFinishPlaying移到playMusic之外。 -
我移动了它。但仍然是同样的错误。你能分享一下鳕鱼吗??