NSUnknownKeyException:被发送到一个不符合 KVC 的对象 "player" 属性

NSUnknownKeyException : was sent to an object that is not KVC-compliant for the "player" property

我已将我的代码更新为 Xcode 9 中的 swift 4。在此之前它工作正常。但是现在 AVplayer 在下面的观察者处崩溃是它崩溃的代码。

addObserver(self, forKeyPath: "player.currentItem.duration", options: [.new, .initial], context: &playerViewControllerKVOContext)

日志是

Terminating app due to uncaught exception 'NSUnknownKeyException',reason: '[ addObserver: forKeyPath:@"player.currentItem.duration" options:5 context:0x10ff74ac8] was sent to an object that is not KVC-compliant for the "player" property.'

Swift 没有自己的 Key value observer 所以对于 Swift 4 我们必须添加:

@objc dynamic

在属性之前需要观察其值。在您的情况下,它将是 AVPlayer 实例。例如:

class MyPlayerCustomView: UIView {

@objc dynamic var myPlayer: AVPlayer?

}

希望这能解决您的问题。它确实解决了我的问题!