web-dev-qa-db-ja.com

(Swift)条件付きバインディングの初期化子には、「AVAudioInputNode」ではなく、オプションの型が必要です

スピーチからテキストへの機能を作成しようとしていますが、エラーが発生しています:

Initializer for conditional binding must have Optional type, not 'AVAudioInputNode'

guard let inputNode = audioEngine.inputNode else {
        fatalError("Audio engine has no input node")
    }
13
Niall Kiddle

AVAudioEngineinputNodeプロパティはオプションではありません。オーディオエンジンは、inputNodeが最初にアクセスされたときにオンデマンドでシングルトンを作成します。ゼロにすることはできません。そのため、ガードは意味をなしません。

したがって、ガードを削除して、audioEngine.inputNodeをそのまま使用してください。 nilにはできません。

inputNodeを使用する前に何かに接続されていることを確認する必要があります。

入力ノードの入力形式(具体的には、ハードウェア形式)でゼロ以外のサンプルレートとチャネルカウントを確認し、入力が有効かどうかを確認します。

(Appleのドキュメントから)

12
joern