我正在使用QueuePlayer播放歌曲列表,并且正在播放这些歌曲。我的问题是,我正试图跟踪当前项目更改的时间。
我尝试向QueuePlayer添加一个观察者,但这不起作用。观察函数没有被调用。任何帮助都将不胜感激
观察员
queuePlayer.currentItem?.addObserver(self, forKeyPath: "currentItem", options: [.new, .old], context: nil)
}
监听观察者//item更改时不被调用
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "currentItem" {
if let oldItem = change?[NSKeyValueChangeKey.oldKey] as? AVPlayerItem {
print("Old item : \(oldItem)")
}
if let newItem = change?[NSKeyValueChangeKey.newKey] as? AVPlayerItem {
print("New item : \(newItem)")
}
}
}
最佳答案
您的代码正在观察currentItem
的queuePlayer.currentItem
属性。
要观察currentItem
的queuePlayer
属性,应该
queuePlayer.addObserver(self, forKeyPath: "currentItem", …
或者更好的是,对于编译时检查…
queuePlayer.addObserver(self, forKeyPath: #keyPath(AVQueuePlayer.currentItem), …
关于swift - AVQueuePlayer当前项目已更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51953301/