Xcode 12. 'AVCapturePhotoOutput' 类型的值没有成员 'supportedFlashModes'

Nik*_*Kov 6 xcode xcode12

在新的 Xcode 12 中,出现错误:Value of type 'AVCapturePhotoOutput' has no member 'supportedFlashModes'当我尝试访问https://developer.apple.com/documentation/avfoundation/avcapturephotooutput/1648766-supportedflashmodes 有 什么建议吗?

小智 9

似乎是 Xcode 12 上的错误,但您可以使用宏条件解决它:

#if !targetEnvironment(simulator)
guard stillImageOutput?.supportedFlashModes.contains(mode) == true else { return }
//rest of your code
#endif
Run Code Online (Sandbox Code Playgroud)


Nik*_*Kov 1

正如@Andy Heard所写

我们的歉意。对于使用 Swift 3.2 或 Swift 4.0 的应用程序,多个 AVFoundation 捕获 API(外部协议的公共扩展)在 Xcode 9 中无意中被标记为私有。

以下 AVFoundation API 暂时不可用:

  • AVCaptureDevice.Format.supportedColorSpaces

  • AVCaptureDevice.supportedFlashModes

  • AVCapturePhotoOutput.availablePhotoPixelFormatTypes

  • AVCapturePhotoOutput.availableRawPhotoPixelFormatTypes

  • AVCapturePhotoSettings.availablePreviewPhotoPixelFormatTypes

作为解决方法,您可以通过在每个 API 前面添加双下划线 ( ) 来使用这些 API 的 SwiftPrivate 版本__。例如,更改 AVCaptureDevice.Format.supportedColorSpacesAVCaptureDevice.Format.__supportedColorSpaces.