【发布时间】:2017-08-16 21:04:30
【问题描述】:
我需要观察 AVPlayer.status 的变化。
我有一个 AVPlayer 实例和一个 context 变量
private var lastPlayer : AVPlayer?
private var playerStatusContext = 0
设置 AVPlayer 实例后,我添加了一个 observer,如下所示:
// KVO status property
self.lastPlayer!.addObserver(self, forKeyPath: "status", options: [.new, .initial], context: &playerStatusContext)
然后我重写了 observeValue 函数,如下所示:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?)
{
let status : AVPlayerStatus? = change?[.newKey] as? AVPlayerStatus
if(status != nil && context == &playerStatusContext)
{
// DO MY STUFF
}
}
问题是 change 是 0 键/值字典或一些(无论这意味着什么),而我的本地 status 常量始终是 nil,所以我不能做我的事。
也许我将 change 转换为 AVPlayerStatus 错误?请帮忙。谢谢。
【问题讨论】:
-
在
observeValue方法中打印change。你看到了什么?
标签: ios swift avplayer key-value-observing