我想通过a @State的init()方法在SwiftUI中初始化var 的值Struct,以便它可以从准备好的字典中获取适当的文本以用于TextField中的操作。源代码如下所示:
struct StateFromOutside: View {
let list = [
"a": "Letter A",
"b": "Letter B",
// ...
]
@State var fullText: String = ""
init(letter: String) {
self.fullText = list[letter]!
}
var body: some View {
TextField($fullText)
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是执行失败并显示错误 Thread 1: Fatal error: Accessing State<String> outside View.body
我该如何解决?提前非常感谢您!
使用下面的给定代码,我尝试遍历字典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)) { …Run Code Online (Sandbox Code Playgroud) swiftui ×2