2017-12-27 9 views
0

私は自分のアプリケーションのカメラ機能を提供するために取り組んでいます。私はチュートリアル(AppCoda:https://www.appcoda.com/avfoundation-swift-guide/)に従っていました。私は他のS.O.を見ました。その答えが解決されるためには、以下の文の右側がオプションでなければならないことを学びました。私はそれをオプションにしてエラーを修正する方法は?条件付きバインドの初期設定には、[AVCaptureDevice]ではなく、オプションの型が必要です

enter image description here

答えて

1

オプションを使用すると、変数にnilを持つことができます。コンパイラは、変数を使用する前に値があるかどうかをチェックしなければなりません。しかし、オプションがない場合、それはあなたにとって良いことです。値が常にあることが保証されているため、値を確認する必要はありません。

let cameras = session.devices.flatMap { $0 } 
guard !cameras.isEmpty else { throw CameraControllerError.noCamerasAvailable } 

を明らかにコールが配列[AVCaptureDevice]、ないオプションの配列を返す[AVCaptureDevice]?session.devices.flatMap { $0 }ので:

は、したがって、あなたの場合には次のようにコードを書き換え、そこにオプションを望んでいません。したがって、コンパイラは、カメラが常に配列値を持ち、決してゼロでないことを保証することができます。したがって、カメラがないことを意味する空の配列を守ることができます(カメラのリストは空です)。

+1

あなたは.isEmptyと{ – coder

+0

の間にelse文を忘れてしまったと思います –

関連する問題