首页 > 解决方案 > SWIFTUI - OberservableObject 类被设置为 nill 每次调用

问题描述

我正在尝试学习 Swift 和 swiftUI。

我有一个类:在按钮内调用 ObservableObject。

该类获取一些数据,并将其存储在数据变量((字符串:任意)的数组)中

在主视图 VStack 的 onAppear 函数中调用类函数 fetch data。该函数的结果填充一个列表。

一切正常,但每次我回想起视图时,列表都会自行清空。

这里是开课时间

class fetchDataModel: ObservableObject {

@Published var datas:[data] = [data]()

现在数据列表视图:

struct allData: View {
@ObservedObject var datas =  fetchDataModel()

var body: some View {
    VStack{
        NavigationView {
            List(datas.data){ data in

                    NavigationLink(destination: data(data: data)){
                    HStack{
                        Text(data.someText)
                    }

                }
            }

        }
    }.navigationBarTitle(Text("Landmarks"))
        .onAppear(){
            self.datas.fetchData()

    }

}

}

我有一个填充motherView的侧面菜单,一旦单击侧面菜单中的按钮,它就会调用datalist()(会话是一个environmentObject)

if session.currentPage == "data" {
         myview =  AnyView(allDatas())

    } 

所以我猜,每次我将 myView 设置为 allDatas 时,它都会重新初始化 datas = fetchDataModel() 类,并将其所有值设置为 0。有没有办法避免这个问题?

标签: swiftswiftuiswift-class

解决方案


推荐阅读