AVPlayerItem 外部元数据无法识别的选择器

AVPlayerItem externalMetadata unrecognized selector

这段代码在 iOS 12 上崩溃,出现无法识别的选择器异常:

[AVPlayerItem externalMetadata]: unrecognized selector sent to instance

但是,此代码在 iOS 13 上没有崩溃。

Apple documentation 声明 AVPlayerItem 自 iOS 12 以来具有 externalMetadata getter 和 setter。


    let item = AVPlayerItem(url: videoURL)

    let mutableMetadataItem = AVMutableMetadataItem()
    mutableMetadataItem.identifier = AVMetadataIdentifier.commonIdentifierDescription
    mutableMetadataItem.value = 1
    item.externalMetadata.append(mutableMetadataItem)

你能帮我理解为什么会这样吗?

externalMetadata 是在 iOS 13 中引入的。这一事实在相关的 WWDC 2019 视频中明确指出。简而言之,文档(或可用性标签)是错误的——错误的结果是允许您在实际不存在的上下文 (iOS 12) 中使用 externalMetadata,并且所以你崩溃了。