以编程方式创建 AVPlayer 会导致不断的 CUIDatalog 警告

Posted

技术标签:

【中文标题】以编程方式创建 AVPlayer 会导致不断的 CUIDatalog 警告【英文标题】:Programmatically creating AVPlayer results in constant CUICatalog warnings 【发布时间】:2020-06-04 18:50:21 【问题描述】:

我在 IGListKit 驱动列表的集合视图单元格中显示视频。 这是单元格:

import AVKit

class ContentCell: UICollectionViewCell 
  static var vc: UIViewController?

  func setup() 
    if media.fileType.starts(with: "video/") 
      return setupVideo()
    
  

  var videoVC: AVPlayerViewController?
  func setupVideo() 
    guard let vc = ContentCell.vc else 
      return
    
    guard let videoVC = videoVC else 
      let videoVC = AVPlayerViewController()
      self.videoVC = videoVC
      vc.addChild(videoVC)
      self.addSubview(videoVC.view)
      setupVideo()
      return
    

    videoVC.view.frame = bounds
    videoVC.player = AVPlayer(url: URL(string: media.originalSource!)!)
  

一旦我开始播放视频(它确实可以播放!)并稍微滚动列表,我就会不断收到此错误:

2020-06-04 14:44:01.171138-0400 App[90104:5433754] [framework] CUICatalog: Invalid asset name supplied: '(null)'

在运行时问题上设置断点并不能说明问题:

有什么想法吗?

【问题讨论】:

此警告的其他问题指向缺少图像的图像视图,但我没有图像视图。 URL 也不是 nil,否则,我会得到一个异常而不是警告。 我也尝试了多个视频,每次都出现同样的错误。 【参考方案1】:

我不敢相信我没有测试过这个。但该错误确实只发生在模拟器上。在设备上它很好。解决了。​​


更新: 再次遇到同样的问题。也许我从来没有真正解决过它?时间太长了,无法确定。但是要解决错误

Invalid asset name supplied: '(null)'

你可以找到答案here:

这是由在情节提要的标签栏项目上设置选定的图像字段引起的。清除此字段会清除错误。

【讨论】:

以上是关于以编程方式创建 AVPlayer 会导致不断的 CUIDatalog 警告的主要内容,如果未能解决你的问题,请参考以下文章

AVPlayer - 如何以编程方式打开/关闭来自 HTTP Live Streaming 视频的 CC?

如何以编程方式使系统创建交换文件?

Swift 3:以编程方式调整 UICollectionViewCell 的大小会导致单元格重叠

以编程方式创建 MapView 并添加标记导致片段中出现空指针异常

以编程方式添加约束会导致崩溃

AVPlayer 导致模拟器崩溃但在设备上运行良好