尝试显示数组时在 ForEach 上出错

Getting error on ForEach when trying to show array

我有一种方法可以从数组中获取随机单词并将其转换为字母数组,我尝试使用 ForEach 显示每个字母,但出现此错误。

Cannot convert value of type '[Any]' to expected argument type 'Binding<C‎>'

var gameLetters = ContentView.getLetters()

...

ForEach(gameLetters) { letter in   //error here
        Text(letter)
}

这是方法

static func getLetters() -> Array<Any> {
    let allWords = WordList.wordList
    let randomWord : String! = allWords.randomElement()
    let letters = Array(randomWord)
    return letters
}

如果有什么需要我详细说明的,请告诉我。

编译器不满意,因为 Any 不符合协议 HashableIdentifiable

将 getLetters 声明更改为

static func getLetters() -> Array<Character> {
    let allWords = WordList.wordList
    let randomWord : String! = allWords.randomElement()
    let letters = Array(randomWord)
    return letters
}

会让编译器明白getLetters()的return是一个Characters的数组(Characters符合Hashable

您还需要将 ForEach 更改为

ForEach(gameLetters, id: \.self) { letter in
    Text(String(letter))
}