2017-10-23 10 views
0

私はiOSプログラミングの新人で、現在UDacity(PitchPerfect)のIntro to xCodeとSwiftチュートリアルを行っています。Swift/xCodeエラーEXC_BAD_INSTRUCTION(コード= EXC_1386_INVOP、サブコード

このチュートリアルの一部として、私たちは2番目のVCがオーディオを再生するための拡張(AVAudioPlayerDelegate)をプロジェクトに追加することになっています。 playsoundsviewcontroller-audio.swiftと呼ばれるこの拡張ファイルをxCodeプロジェクトに追加すると、次のランタイムクラッシュが発生しました。

スレッド1:EXC_BAD_INSTRUCTION(コード= EXC_ 1386_INVOP、サブコード

コードスニペットとスクリーンショットが添付されています。 4つの印刷コマンドを除いてこの拡張機能を変更していないことに注意してください。コースインストラクターの指示に従ってプロジェクトにインポートするだけです。コンソールには「範囲外のインデックス」が表示され、問題は明らかに「nodes [x + 1]」です。x、nodes.count、およびnodes配列を含むこれを解決するための変数もいくつか表示しました。

これはなぜ機能しないのですか?道が推奨する演算子と同じであるループ

for x in 0...nodes.count-1 { 

では...経験豊富なプログラマのための

func connectAudioNodes(_ nodes: AVAudioNode...) { 
    for x in 0...nodes.count-1 { 
     audioEngine.connect(nodes[x], to: nodes[x+1], format: audioFile.processingFormat) 
    } 
} 

image

+0

まで反復することで、StackOverflowのは、私はちょうど発見し、私はこの質問へのスクリーンショットをアップロードすることはできません。 – JMBaker

+0

このクラスのコードをさらに投稿できますか?コードの小さなスニペットだけではわかりにくいです。範囲外のインデックスは、配列に0〜9の10個の要素があるとします。 countが10であるので、0-9の範囲で繰り返しますが、9になると9 + 1のインデックスを作成しようとすると、配列の範囲外になります。 – Steve

+0

マディさんありがとうございました。これで問題は解決しました。とても有難い。 – JMBaker

答えて

1

を見つけることがおそらく簡単

for x in 0..<nodes.count { 

で最後の反復はxが最後のインデックスであり、x+1はの範囲外のであり、例外が発生します。


ソリューションは最後から二番目のインデックス残念ながら

for x in 0..<nodes.count-1 { 
+0

素早く返信いただきありがとうございました。問題を修正しました。とても有難い。 – JMBaker

関連する問題