【问题标题】:NSUnknownKeyException : was sent to an object that is not KVC-compliant for the "player" propertyNSUnknownKeyException : 被发送到一个不符合 KVC 的“player”属性的对象
【发布时间】:2017-09-26 07:09:56
【问题描述】:

我已在 Xcode 9 中将我的代码更新为 swift 4。在此之前它运行良好。但是现在 AVplayer 在观察者面前崩溃了,下面是它崩溃的代码。

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

日志是

由于未捕获的异常而终止应用程序 'NSUnknownKeyException',原因:'[addObserver:forKeyPath:@“player.currentItem.duration”选项:5 context:0x10ff74ac8] 被发送到不符合 KVC 的对象 对于“播放器”属性。'

【问题讨论】:

  • 感谢 Tushar Sharma 的编辑

标签: ios11 swift4 xcode9 kvc


【解决方案1】:

Swift 没有自己的键值观察器,所以对于 Swift 4,我们必须添加:

@objc dynamic

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

class MyPlayerCustomView: UIView {

@objc dynamic var myPlayer: AVPlayer?

}

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

【讨论】:

  • 作为解释,动态使属性由 Objective-C 运行时分派。这也是需要@objc 的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-21
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
相关资源
最近更新 更多