繁体   English   中英

SwiftUI:在 scope 中找不到类型

[英]SwiftUI: Cannot find type in scope

我无法想出一个很好的方法来问这个问题,所以我将展示一个简单的例子。 我有一个 model,一个@ObservableObject ,它包含一个结构:

class MyModel: ObservableObject {
    @Published var allData: [TheData] = []
    
    struct TheData: Hashable {
        let thePosition: Int
        let theChar: Character
    }
    
    func initState() {
        let allChars = Array("abd")
        for (index, element) in allChars.enumerated() {
            allData.append(TheData(thePosition: index, theChar: element))
        }
    }
}

在我看来,我正试图从两个不同的结构到达 model(由于烦人The compiler is unable to type-check this expression in reasonable time.. ),但我得到一个错误:

struct ContentView: View {
    @StateObject var theModel = MyModel()
    
    var body: some View {
        VStack {
            Image(systemName: "globe")
            Text("Hello, world!")
            HStack {
                ForEach(theModel.allData, id: \.self) { theElement in
                    letterAcross(myLetter: theElement)
                }
            }
        }
        .onAppear {
            theModel.initState()
        }
        .environmentObject(theModel)
    }
}

struct letterAcross: View {
    @EnvironmentObject var theModel: MyModel
    var myLetter: TheData // <----- the ERROR is here

    var body: some View {
        HStack {
            Text(String(myLetter.theChar))
        }
    }
}

错误是Cannot find type TheData in scope 看来我在某种程度上弄乱了@StateObject@EnvironmentObject 这样做的正确方法是什么?

这是一个嵌套类型,所以它是MyModel.TheData

var myLetter: MyModel.TheData

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM