条件绑定的初始化程序必须具有可选类型,而不是'[AVCaptureDevice]'

我正在努力提供我的应用程序相机功能。我正在学习一个教程(AppCoda:https://www.appcoda.com/avfoundation-swift-guide/)。我看过其他S.O.答案并且已经了解到,声明的右侧(下面)必须是可选的,以解决错误。我将如何使它成为可选项并修复错误?条件绑定的初始化程序必须具有可选类型,而不是'[AVCaptureDevice]'

回答:

可选可以让你有一个变量为零。然后编译器强制你在使用变量之前检查是否有值。但是,如果您没有可选项,那么对您而言这是一件好事 - 您不必检查确保始终有一个值的值。

因此你的情况,你不希望一个可选的有,重写代码如下:

let cameras = session.devices.flatMap { $0 } 

guard !cameras.isEmpty else { throw CameraControllerError.noCamerasAvailable }

因为显然通话session.devices.flatMap { $0 }返回数组[AVCaptureDevice],而不是一个可选的阵列[AVCaptureDevice]?。因此,编译器可以保证摄像机总是有一个数组值,而不是零。因此,您可以防止空阵列,这意味着没有摄像头(因为摄像头列表是空的)。

以上是 条件绑定的初始化程序必须具有可选类型,而不是'[AVCaptureDevice]' 的全部内容, 来源链接: utcz.com/qa/265514.html

回到顶部