我正在使用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)")
        }
    }
}

最佳答案

您的代码正在观察currentItemqueuePlayer.currentItem属性。
要观察currentItemqueuePlayer属性,应该

queuePlayer.addObserver(self, forKeyPath: "currentItem", …

或者更好的是,对于编译时检查…
queuePlayer.addObserver(self, forKeyPath: #keyPath(AVQueuePlayer.currentItem), …

关于swift - AVQueuePlayer当前项目已更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51953301/

10-09 18:21