2017-12-16 11 views
0

を持っている必要があり、私は私の迅速なプロジェクトスウィフトイニシャライザオプションの種類ではなく、「[AVCaptureDevice]」

if let availabeDevices = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInMicrophone, 
.builtInWideAngleCamera], mediaType: AVMediaType.video, position: .back).devices { 

      captureDevice = availabeDevices.first 
     } 

で、この次のコードを持っている私はこのコードを実行すると、それは私に読み込むかの行にエラーが発生します:

Initializer for conditional binding must have Optional type, not '[AVCaptureDevice]' 

私は.devices?を追加しようとしたが、それはこのエラーを与えた:

Cannot use optional chaining on non-optional value of type '[AVCaptureDevice]' 

私は何をしますか?

答えて

0

以下の行を使用してください。

ここにあなたのエラーを説明する
if let captureDevice = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInMicrophone, .builtInWideAngleCamera], 
mediaType: AVMediaType.video, 
position: .back).devices.first { 
      self.captureDevice = captureDevice 
     } 
+0

うん、それが働いたおかげで – askoasksao

0

AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInMicrophone, .builtInWideAngleCamera], mediaType: AVMediaType.video, position: .back).devices戻り[AVCaptureDevice]Optionalではなく、あなたがif letを使用したい場合は、その後RHSは常にOptionalであるべきであるので、あなたがエラーを取得しています。

AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInMicrophone, .builtInWideAngleCamera], mediaType: AVMediaType.video, position: .back).devicesOptionalにする必要がある場合は、末尾にas? [AVCaptureDevice]を追加してこのエラーを解決してください。

そして、あなたのコードは次のようになります。

if let availabeDevices = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInMicrophone, 
                      .builtInWideAngleCamera], mediaType: AVMediaType.video, position: .back).devices as? [AVCaptureDevice] { 

    let captureDevice = availabeDevices.first 
}