2017-12-26 21 views
0
を使用して結合するための初期化子をスロー

私はXcodeの周りに自分の道を見つけ、Appleの開発者向けWebサイト上のガイダンスを使用して、基本的なライブ転写アプリを構築しようとしたんだ(linkXcodeの条件がAVAudioInputNode

は、次の行では、以下に示すエラーがスローされます:

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

0 "の条件付き結合の初期化子は、ない AVAudioInputNodeをオプションの種類を持っている必要があります"

私は同様のエラーですべてのstackoverflow投稿をチェックしましたが、何も機能していません。上記のリンクからアップルからプロジェクトをダウンロードしても、コードにエラーはありません。私はどこかで愚かな間違いがあった場合に備えて、自分のプロジェクトからコードをコピーしましたが、私のプロジェクトでは全く同じコードが例外をスローします。

私はXcodeの9.2を使用していると私はiOSの11のために

感謝を開発しています!

答えて

0

あなたのケースのガードステートメントは冗長です。 inputNodeはオプションではないため、nil値を保持することはできません。だからそれを守ることは冗長なので、エラーメッセージです。

あなたはガード文を省略することができ、そのelseブロックはでそれを置き換える:

let inputNode = audioEngine.inputNode 
+0

は理にかなって、私はそれをどのように修正するのですか? "guard"を削除して "let ..."としておくと、Xcodeはコードの残りの部分でエラーをスローしますか?ありがとう! –

+0

@ Justin915私は私の答えを編集しました。 let文を使うことができます(ただし、elseブロックがないと意味がなくなり、ガードキーワードなしの構文が間違っています) – giorashc

+0

大変感謝しています。 –