首页 > 解决方案 > SwiftUI @State var 初始化问题

问题描述

我想通过 a 的方法@State在 SwiftUI 中初始化 var的值,因此它可以从准备好的字典中获取正确的文本,以便在 TextField 中进行操作。源代码如下所示:init()Struct

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)
    }
}

不幸的是,执行失败并出现错误Thread 1: Fatal error: Accessing State<String> outside View.body

我该如何解决这种情况?非常感谢您!

标签: swiftui

解决方案


SwiftUI 不允许您更改 @State初始化程序,但您可以对其进行初始化

删除默认值并使用直接_fullText设置@State,而不是通过属性包装访问器。

@State var fullText: String // No default value of ""

init(letter: String) {
    _fullText = State(initialValue: list[letter]!)
}

推荐阅读