实例成员不能用于 SwiftUI 预览中的类型

gur*_*gui 20 preview swiftui

我的预览中出现以下错误:

struct DetailView: View {
    var header: DataProvider.DataHeader

    var body: some View {
        Text("...")
    }
}

struct DetailView_Previews: PreviewProvider {
    var a = DataProvider.DataHeader(title: "a", text: "b")

    static var previews: some View {
        DetailView(header: a)
    }
}
Run Code Online (Sandbox Code Playgroud)

错误是:

Instance member 'a' cannot be used on type 'DetailView_Previews'
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?

Asp*_*eri 36

这是由于 static var preview

所以也使用静态

static var a = DataProvider.DataHeader(title: "a", text: "b")
Run Code Online (Sandbox Code Playgroud)

或就地建造

DetailView(header: DataProvider.DataHeader(title: "a", text: "b"))
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案。这是某些编程语言对新用户积极敌对的又一个例子。生成此类错误消息的工具具有足够的信息来注入有关为何遇到错误的提示。 (4认同)

osk*_*rko 18

SwiftUI Preview -> 你必须在这里使用 static var :

struct ErrorView_Previews: PreviewProvider {
    @State static var alert = false
    @State static var error = "Please fill all the contents properly"

    static var previews: some View {
        ErrorView(alert: $alert, error: $error)
    }
}
Run Code Online (Sandbox Code Playgroud)