gpt4 book ai didi

SwiftUI ForEach 字典识别问题

转载 作者:行者123 更新时间:2023-12-02 16:39:51 25 4
gpt4 key购买 nike

使用下面给定的代码,我尝试迭代字典 wordList ,但由于问题 Instance method 'identified(by:)' require that '(key: Int, value: [String : String])' 符合 'Hashable'

所以我的猜测是,我必须以某种方式将协议(protocol)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"))
}
}
}
}

最佳答案

看来你有什么误会。根据您发布的代码,我猜您认为迭代字典会迭代字典中的值。但这不是字典迭代的工作原理。

当您迭代字典时,您会收到。每一对包含一个键和字典中的相应值。在您的代码中,wordListEntry 的类型为 (key: Int, value: [String: String]),其第一个元素为 key 类型为 Int,第二个元素为 value 类型为 [String: String]

我认为您只想迭代字典的键,然后在 ForEach 正文中查找相应的值,如下所示:

ForEach(wordList.keys.sorted().identified(by: \.self)) { key in
let lang1 = wordListEntry[wordOrder[0]]
let lang2 = wordListEntry[wordOrder[1]]
return WordRow(lang1, lang2)
}

关于SwiftUI ForEach 字典识别问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56688923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com