尝试显示数组时在 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
不符合协议 Hashable
或 Identifiable
。
将 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))
}
我有一种方法可以从数组中获取随机单词并将其转换为字母数组,我尝试使用 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
不符合协议 Hashable
或 Identifiable
。
将 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))
}