Here is the snippet of the code:
public var captureDevice: CaptureDevice?
...
guard let captureDeviceTest = AVCaptureDevice.DiscoverySession.init(
deviceTypes: [AVCaptureDevice.DeviceType.builtInWideAngleCamera],
mediaType: AVMediaType.video,
position: cameraPosition).devices.first else {
return
}
self.captureDevice = captureDeviceTest
if let captureDevice = self.captureDevice {
...
// This is where error occurs
if captureDevice.isExposureModeSupported(.continuousAutoExposure) {
captureDevice.exposureMode = .continuousAutoExposure
}
The error I am getting is: Cannot assign to property: 'captureDevice' is a 'let' constant. I tried suggestion here to use inout but despite placing that in various places, it still didn't work for me.
Any swift experts can help me out here?
CodePudding user response:
You are accessing the local variable captureDevice, not the struct's captureDevice variable.
Just replace the line causing the error to the following:
self.captureDevice?.exposureMode = .continuousAutoExposure
Note the self. before captureDevice.
You might think of changing the conditional binding to using var instead of let, but that won't actually work. This is because you are just mutating a local copy. It will fix the compile error but the logic won't work.
