0

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

无法将类型“[Any]”的值转换为预期的参数类型“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
}

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

4

1 回答 1

0

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

将 getLetters 声明更改为

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

将允许编译器理解返回的是( conform to )getLetters()的数组CharactersCharactersHashable

您还需要更改ForEach

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

于 2021-12-07T09:45:55.507 回答