错误:无法将“[String]”类型的值转换为预期的参数类型“String?”

时间:2017-06-14 00:51:12

标签: arrays swift string avaudioplayer

Refer to this image please!帮助!任何人都可以帮我理解这个错误。这是一个创意项目,在我的班级的这个特定功能中,我试图创建一个声音数组(.wav格式)。正在播放的每个声音都对应于来自txt文件的字母。四个不同的字母对应四种不同的声音。我的程序从txt文件中读取每个字母并识别要播放的声音。我的目标是让声音重叠,因为当它们被播放时,它们会相互切断。为了做到这一点,我的理解是,我首先需要创建一个声音数组,添加数组,让音频播放器为每个声音/字母对应的声音,在完成后删除该数组中的audioPlayer播放,然后将另一个数组添加到刚完成播放的数组,然后在播放结束后删除该数组。我必须在创建一串声音的同时完成所有这些操作。我也很难掌握数组和字符串之间的区别。

   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)
    }
    }

}

3 个答案:

答案 0 :(得分:0)

声音是一个类型字符串数组。

forResource期待一个字符串;不是类型字符串数组

你需要发送一个像“Key1.wav”这样的字符串;不是整个阵列

答案 1 :(得分:0)

应该很简单。您需要迭代数组并分别处理每个项目。

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

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

答案 2 :(得分:0)

数组包含Ints(整数),字符串(引文中的文本),自定义对象(用户,汽车等)等对象

在你的代码中,Sound是一个字符串数组。要访问声音中的每个字符串:

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 }

希望帽子有帮助!