【问题标题】:Value of type 'AVCapturePhotoSettings' has no member 'availablePreviewPhotoPixelFormatTypes“AVCapturePhotoSettings”类型的值没有成员“availablePreviewPhotoPixelFormatTypes”
【发布时间】:2018-01-15 14:02:37
【问题描述】:
@objc func launchCoreML() {
    let settings = AVCapturePhotoSettings()
    let previewPixelType = settings.availablePreviewPhotoPixelFormatTypes.first
    let previewFormat = [
        kCVPixelBufferPixelFormatTypeKey as String: previewPixelType, 
        kCVPixelBufferWidthKey as String: 160, 
        kCVPixelBufferHeightKey as String: 160
    ] as [String : Any]

    settings.previewPhotoFormat = previewFormat
    cameraOutput.capturePhoto(with: settings, delegate: self)
}

我有一个错误提示:

“AVCapturePhotoSettings”类型的值没有成员 'availablePreviewPhotoPixelFormat'。

我正在使用 Xcode 9 的测试版。

【问题讨论】:

    标签: swift4 xcode9 coreml


    【解决方案1】:

    在 beta 4 中,它被重命名为 __availablePreviewPhotoPixelFormat。我还没有看过 beta 5。

    【讨论】:

    • 在 beta 5 中仍然是 __availablePreviewPhotoPixelFormatTypes
    • 我也在努力在 beta 5 中找到相同的东西。
    • 这也发生在 Xcode 9 GM 中。非常感谢。
    • 使用 Xcode 9.0 (9A235) -- 无法解决这个问题(
    • 正确答案应该是来自@eharo2 的答案。 "__availablePreviewPhotoPixelFormatTypes"
    【解决方案2】:

    升级到 Xcode 12.0 后我遇到了同样的问题

    在 Final Xcode Release: Version 12.0 (12A7209) 中,settings.availablePreviewPhotoPixelFormatTypes 似乎再次更改为 settings.__availablePreviewPhotoPixelFormatTypes。我已经在没有“重命名”的情况下使用它至少 2 年了。感谢@Matthijs Hollemans 的帮助

    编辑: 这是关于此更改的官方回应: https://developer.apple.com/forums/thread/86810?answerId=259270022#259270022

    这段代码编译成功。

    let settings = AVCapturePhotoSettings()
    guard let previewPixelType = settings.__availablePreviewPhotoPixelFormatTypes.first else { return }
    let previewFormat = [
        kCVPixelBufferPixelFormatTypeKey as String: previewPixelType,
        kCVPixelBufferWidthKey as String: 160,
        kCVPixelBufferHeightKey as String: 160
    ]
    settings.previewPhotoFormat = previewFormat
    output.capturePhoto(with: settings, delegate: self)
    

    【讨论】:

      【解决方案3】:
              var photoSettings: AVCapturePhotoSettings
              if #available(iOS 11.0, *) {
                  photoSettings = AVCapturePhotoSettings.init(format: [AVVideoCodecKey: AVVideoCodecType.jpeg])
              } else {
                  // Fallback on earlier versions
                  photoSettings = AVCapturePhotoSettings()
                  if photoSettings.__availablePreviewPhotoPixelFormatTypes.count > 0 {
                      photoSettings.previewPhotoFormat = [kCVPixelBufferPixelFormatTypeKey as String : photoSettings.__availablePreviewPhotoPixelFormatTypes.first!]
                  }
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        • 2016-03-11
        • 1970-01-01
        • 1970-01-01
        • 2021-06-17
        • 2017-04-28
        • 2016-12-03
        相关资源
        最近更新 更多