2017-06-14 16 views
0

Refer to this image please! Help!誰も私がこのエラーを理解するのを助けることができます。これは私のクラスのこの特定の関数で、創造的なプロジェクトです。私は一連のサウンド(.wav形式)を作成しようとしています。再生されている各サウンドは、txtファイルの文字に対応しています。 4つの異なる文字が4つの異なる音に対応する。私のプログラムは、txtファイルから各文字を読み取り、再生するサウンドを識別します。私の目標は、彼らが演奏されているとき、彼らはお互いを切り離すので、音が重なっていることです。これを行うためには、まずサウンドの配列を作成し、配列を追加し、それに対応する各サウンド/レターのオーディオプレーヤーをデリゲートにし、その配列のaudioPlayerを削除してから削除します演奏を終了したばかりの別の配列を追加してから、演奏が終了したら配列を削除します。私は一連の音を作りながらこれをすべて行う必要があります。私はまた、配列と文字列の違いを把握するのに苦労しています。エラー: "[String]"型の値を期待される引数型 "String"に変換できません。

func playSound() { 

    let sound: [String] = ["Keys1.wav", "Keys2.wav", "Keys3.wav", "Keys4.wav"] 


    if let audioPath = Bundle.main.path(forResource: "Keys1", ofType: "wav") { 
    do { 
     sound = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath!)) 
     activeSound.delegate = self 
     Swift.print("Audio was loaded") 

    } 
    catch { 
     Swift.print("Can't read audio file") 
     debug(error.localizedDescription) 
    } 
    } 

} 

答えて

0

シンプルにする必要があります。配列を繰り返し処理し、各項目を別々に処理する必要があります。

let sounds = [ /* the contents of your array */ ] 

for s in sounds { 
    // do stuff on s 
} 
0

サウンドはタイプ文字列の配列です。

forResourceは文字列を要求しています。タイプ文字列の配列ではありません

"Key1.wav"のような文字列で送信する必要があります。配列全体ではありません

0

配列は、あなたのコードではint型(整数)のようなオブジェクト、文字列(引用のテキスト)、カスタムオブジェクト(ユーザー、車など)

を保持し、サウンドは、文字列の配列です。音で各文字列にアクセスするには:

for string in sound { /perform actions on the individual sound here /your do catch block would go here, so it would get performed for each string }

ホープ帽子ができます!

関連する問題