currentItem
是一个
可选择的
AVPlayer
. 以下是
在Swift 4.2/Xcode 10中(注意关键路径中的附加问号):
let observer = player.observe(\.currentItem?.status, options: [.new]) {
(player, change) in
guard let optStatus = change.newValue else {
return // No new value provided by observer
}
if let status = optStatus {
// `status` is the new status, type is `AVPlayerItem.Status`
} else {
// New status is `nil`
}
}
观察到的属性是可选的
AVPlayer.Status?
change.newValue
在回调函数中有一个双可选函数
AVPlayer.Status??
必须拆开两次。
相比之下,它可能无法在较旧的Swift版本中编译
Swiftâs âobserve()â doesnât work for key paths with optionals?