Value of optional type 'AVCaptureDevice?' must be unwrapped to a value of type 'AVCaptureDevice'









up vote
0
down vote

favorite












I was following a tutorial on how to capture a barcode scanner from an ipad camera and this is the code that was written. The tutorial was written in xcode 8 and I am using Xcode 10. I am getting an error that




"Value of optional type 'AVCaptureDevice?' must be unwrapped to a
value of type 'AVCaptureDevice'"




in the do try catch statement. Can someone please tell me the correct way to deal with the optional value in this situation? When I change the line to read "let input = try AVCaptureDeviceInput(device: captureDevice!)"
the app crashes.



import AVFoundation
import UIKit

class ScannerViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate
var video = AVCaptureVideoPreviewLayer() //contains what the camera is pointing at

override func viewDidLoad()
super.viewDidLoad()

//creates session
let session = AVCaptureSession()

//define capture device
let captureDevice = AVCaptureDevice.default(for: AVMediaType.video)

do
let input = try AVCaptureDeviceInput(device: captureDevice)//Error occurs here
session.addInput(input) //input coming from camera

catch
print("Error")

let output = AVCaptureMetadataOutput()
session.addOutput(output)

output.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
output.metadataObjectTypes = [AVMetadataObject.ObjectType.code93, AVMetadataObject.ObjectType.code39] //may need to change this based on barcode type
video = AVCaptureVideoPreviewLayer(session: session)
video.frame = view.layer.bounds
view.layer.addSublayer(video)
session.startRunning()



override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()












share|improve this question



























    up vote
    0
    down vote

    favorite












    I was following a tutorial on how to capture a barcode scanner from an ipad camera and this is the code that was written. The tutorial was written in xcode 8 and I am using Xcode 10. I am getting an error that




    "Value of optional type 'AVCaptureDevice?' must be unwrapped to a
    value of type 'AVCaptureDevice'"




    in the do try catch statement. Can someone please tell me the correct way to deal with the optional value in this situation? When I change the line to read "let input = try AVCaptureDeviceInput(device: captureDevice!)"
    the app crashes.



    import AVFoundation
    import UIKit

    class ScannerViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate
    var video = AVCaptureVideoPreviewLayer() //contains what the camera is pointing at

    override func viewDidLoad()
    super.viewDidLoad()

    //creates session
    let session = AVCaptureSession()

    //define capture device
    let captureDevice = AVCaptureDevice.default(for: AVMediaType.video)

    do
    let input = try AVCaptureDeviceInput(device: captureDevice)//Error occurs here
    session.addInput(input) //input coming from camera

    catch
    print("Error")

    let output = AVCaptureMetadataOutput()
    session.addOutput(output)

    output.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
    output.metadataObjectTypes = [AVMetadataObject.ObjectType.code93, AVMetadataObject.ObjectType.code39] //may need to change this based on barcode type
    video = AVCaptureVideoPreviewLayer(session: session)
    video.frame = view.layer.bounds
    view.layer.addSublayer(video)
    session.startRunning()



    override func didReceiveMemoryWarning()
    super.didReceiveMemoryWarning()












    share|improve this question

























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I was following a tutorial on how to capture a barcode scanner from an ipad camera and this is the code that was written. The tutorial was written in xcode 8 and I am using Xcode 10. I am getting an error that




      "Value of optional type 'AVCaptureDevice?' must be unwrapped to a
      value of type 'AVCaptureDevice'"




      in the do try catch statement. Can someone please tell me the correct way to deal with the optional value in this situation? When I change the line to read "let input = try AVCaptureDeviceInput(device: captureDevice!)"
      the app crashes.



      import AVFoundation
      import UIKit

      class ScannerViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate
      var video = AVCaptureVideoPreviewLayer() //contains what the camera is pointing at

      override func viewDidLoad()
      super.viewDidLoad()

      //creates session
      let session = AVCaptureSession()

      //define capture device
      let captureDevice = AVCaptureDevice.default(for: AVMediaType.video)

      do
      let input = try AVCaptureDeviceInput(device: captureDevice)//Error occurs here
      session.addInput(input) //input coming from camera

      catch
      print("Error")

      let output = AVCaptureMetadataOutput()
      session.addOutput(output)

      output.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
      output.metadataObjectTypes = [AVMetadataObject.ObjectType.code93, AVMetadataObject.ObjectType.code39] //may need to change this based on barcode type
      video = AVCaptureVideoPreviewLayer(session: session)
      video.frame = view.layer.bounds
      view.layer.addSublayer(video)
      session.startRunning()



      override func didReceiveMemoryWarning()
      super.didReceiveMemoryWarning()












      share|improve this question















      I was following a tutorial on how to capture a barcode scanner from an ipad camera and this is the code that was written. The tutorial was written in xcode 8 and I am using Xcode 10. I am getting an error that




      "Value of optional type 'AVCaptureDevice?' must be unwrapped to a
      value of type 'AVCaptureDevice'"




      in the do try catch statement. Can someone please tell me the correct way to deal with the optional value in this situation? When I change the line to read "let input = try AVCaptureDeviceInput(device: captureDevice!)"
      the app crashes.



      import AVFoundation
      import UIKit

      class ScannerViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate
      var video = AVCaptureVideoPreviewLayer() //contains what the camera is pointing at

      override func viewDidLoad()
      super.viewDidLoad()

      //creates session
      let session = AVCaptureSession()

      //define capture device
      let captureDevice = AVCaptureDevice.default(for: AVMediaType.video)

      do
      let input = try AVCaptureDeviceInput(device: captureDevice)//Error occurs here
      session.addInput(input) //input coming from camera

      catch
      print("Error")

      let output = AVCaptureMetadataOutput()
      session.addOutput(output)

      output.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
      output.metadataObjectTypes = [AVMetadataObject.ObjectType.code93, AVMetadataObject.ObjectType.code39] //may need to change this based on barcode type
      video = AVCaptureVideoPreviewLayer(session: session)
      video.frame = view.layer.bounds
      view.layer.addSublayer(video)
      session.startRunning()



      override func didReceiveMemoryWarning()
      super.didReceiveMemoryWarning()









      swift






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 10 at 5:33









      Rakesha Shastri

      6,2882931




      6,2882931










      asked Nov 10 at 5:29









      Maddie Drake

      12




      12



























          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53236257%2fvalue-of-optional-type-avcapturedevice-must-be-unwrapped-to-a-value-of-type%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown






























          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53236257%2fvalue-of-optional-type-avcapturedevice-must-be-unwrapped-to-a-value-of-type%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Kleinkühnau

          Makov (Slowakei)

          Deutsches Schauspielhaus