Swift 引用do/catch块中的变量时使用未解析标识符

Swift 引用do/catch块中的变量时使用未解析标识符,swift,xcode,avcapturesession,do-catch,Swift,Xcode,Avcapturesession,Do Catch,我正在do/catch块中分配一个变量,然后尝试在我的文件中进一步引用该变量。但当我这样做时,我在Xcode中得到以下错误: 使用未解析标识符“captureDeviceInput” 这是我的代码: do{ 让captureDeviceInput=尝试将AVCaptureDeviceInput(设备:captureDevice)作为AVCaptureDeviceInput }捕捉错误{ 打印(“\(错误)”) 返回 } captureSession=AVCaptureSession() capt

我正在
do
/
catch
块中分配一个变量,然后尝试在我的文件中进一步引用该变量。但当我这样做时,我在Xcode中得到以下错误:

使用未解析标识符“captureDeviceInput”

这是我的代码:

do{
让captureDeviceInput=尝试将AVCaptureDeviceInput(设备:captureDevice)作为AVCaptureDeviceInput
}捕捉错误{
打印(“\(错误)”)
返回
}
captureSession=AVCaptureSession()
captureSession?.addInput(输入:captureDeviceInput作为AVCaptureDeviceInput)

Xcode似乎无法识别
captureDeviceInput
变量。如何解决此问题?

captureDeviceInput
在本地声明,这意味着它仅在
do
范围内可见

do {
    let captureDeviceInput = try AVCaptureDeviceInput(device: captureDevice) as AVCaptureDeviceInput
    captureSession = AVCaptureSession()
    captureSession?.addInput(input: captureDeviceInput as AVCaptureDeviceInput)
} catch {
    print("\(error)")
    return
}
把所有好的代码也放在
do
范围内是一个好习惯

do {
    let captureDeviceInput = try AVCaptureDeviceInput(device: captureDevice) as AVCaptureDeviceInput
    captureSession = AVCaptureSession()
    captureSession?.addInput(input: captureDeviceInput as AVCaptureDeviceInput)
} catch {
    print("\(error)")
    return
}

我想我不明白。
do
块是一个块,因此
captureDeviceInput
(以及其中声明的任何其他内容)的作用域是该块,您不能在任何地方使用它else@crizzis对我只需要知道这些。正如你可能知道的,我是一个敏捷的n00b!谢谢你的快速回复!