源码

首页 » 归档 » 源码 » SwiftUI – 线程1:致命错误:找不到类型为MyObject.Type的可观察对象

SwiftUI – 线程1:致命错误:找不到类型为MyObject.Type的可观察对象

我正在用SwiftUI构建一个应用程序。 当我尝试显示工作表/uff08以前的模态/uff09时/uff0c会出现以下错误消息/uff1a

Thread 1: Fatal error: No observable object of type BixiStationCombinedListViewModel.Type found.
A View.environmentObject(_:) for BixiStationCombinedListViewModel.Type may be missing as an ancestor of this view.

当我使用@State变量显示包含使用MapKit的Map视图的模式时/uff0c会发生此错误。
我是Swift Programming和SwiftUI的新手。 错误信息可能对您来说很清楚/uff0c但对我而言并非如此。
我不明白为什么以及如何实现新的环境对象。
是因为我在选择CardView时选择的电台应该全局存储并将信息传递给专用视图吗/uff1f
处理@State的视图

struct CardView: View {

    @EnvironmentObject var bixiModel: BixiStationCombinedListViewModel
    @State private var isModalOpen: Bool = false

    var station: BixiStationCombinedViewModel

    var body: some View {

        ZStack(alignment: .leading) {

                Card()

                StationTextInfo(station: station)

        } .onTapGesture {
            self.isModalOpen = true
            print(self.isModalOpen)
        }
        .sheet(isPresented: self.$isModalOpen) {
            BixiStationDetailView(station: self.station)
        }

    }
}

我试图在工作表中显示的视图

struct BixiStationDetailView: View {

    @EnvironmentObject var bixiModel: BixiStationCombinedListViewModel

    var station: BixiStationCombinedViewModel

    var body: some View {
        VStack {
            MapView(coordinate: station.coordinate, name: station.name)        
        }
    }
}

最后对象

class BixiStationCombinedListViewModel: ObservableObject {

    init() {
        fetchDataFromApi()
    }

    @Published var stationsCombinedList = [BixiStationCombinedViewModel]()

    var stationsInformationList = [BixiStationInformationViewModel]()
    var stationsDataList = [BixiStationDataViewModel]()

    func fetchDataFromApi() {

        }        
    }
}

我可以获取错误消息并显示正确的视图吗/uff1f

答案是/uff1a

您必须将环境对象传递给BixiStationDetailView/uff0c否则它将无法绑定到其@EnvironmentObject。

.sheet(isPresented: self.$isModalOpen) {
    BixiStationDetailView(station: self.station)
        .environmentObject(self.bixiModel)
}

由于您将BixiStationDetailView作为工作表呈现/uff0c因此它不是您的CardView的子视图/uff0c因此不会继承其@EnvironmentObject。

(0)

本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/swiftui-xiancheng1zhimingcuowuzhaobudaoleixingweimyobject-typedekeguanchaduixiang.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:8 月 26, 2019 at 01:28 上午

热评文章