2017-06-14 105 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 }

希望帽子帮助!

相关问题