【发布时间】:2019-06-20 15:07:44
【问题描述】:
使用下面给定的代码,我尝试遍历字典 wordList,但由于问题 Instance method 'identified(by:)' requires that '(key: Int, value: [String : String])' conform to 'Hashable' 而失败。
所以我的猜测是我必须以某种方式将协议Hashable 应用到字典的Int,或者可能有另一种解决方案涉及.identified(by:) 的使用
非常感谢您的帮助!
struct ContentView: View {
@State var wordOrder = ["DE", "EN"]
let wordList: [Int: [String: String]] = [
0: [
"DE": "Hallo Welt",
"EN": "hello world"
],
1: [
"DE": "Tschüss",
"EN": "goodbye"
],
2: [
"DE": "vielleicht",
"EN": "maybe"
]
]
var body: some View {
Group {
NavigationView {
List() {
ForEach(wordList.identified(by: \.self)) { wordListEntry in
let lang1 = wordListEntry[wordOrder[0]]
let lang2 = wordListEntry[wordOrder[1]]
WordRow(lang1, lang2)
}
}
.navigationBarTitle(Text("Alle Wörter"))
}
}
}
}
【问题讨论】:
-
不一定。我也检查了另一个问题,这表明了一种可行的方法。但是这个答案建议为键创建一个数组,为值创建一个数组。我相信上面提出的问题可能有解决方案,不需要那些“回避”。
-
但是你如何克服
Dictionary是无序的这一事实,但你又试图捕捉数组何时重新排序?如果Hashable所做的只是“识别”唯一的数组元素,那么您已经使用 Dictionary 键拥有了它!无论如何,您将需要至少一个数组用于List()订单。
标签: swiftui