2017-06-14 57 views
0

Refer to this image please!幫助!任何人都可以幫助我理解這個錯誤。這是一個創造性的項目,在我的課程的這個特殊功能中,我嘗試創建一組聲音(.wav格式)。每個正在播放的聲音都對應於來自txt文件的信件。四個不同的字母對應四種不同的聲音。我的程序從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

陣列持有像INTS對象(整數),字符串(帶引號的文本),自定義對象(用戶,汽車等)

在代碼中,聲音是一個字符串數組。訪問每個字符串中的聲音:

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 }

希望帽子幫助!

相關問題