SWIFTUI - класс OberservableObject устанавливается равным нулю каждый раз при вызове - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь изучить Swift и swiftUI.

У меня есть класс: ObservableObject, вызываемый кнопкой.

класс извлекает некоторые данные и сохраняет их в data var ( массив из (string: any))

данные выборки функции класса вызываются внутри функции onAppear в главном представлении VStack. результаты функции заполняют список.

все работает нормально, но каждый раз, когда я вспоминаю представление, список опустошается.

здесь открытие класса

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 () ( session - это environmentObject)

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

    } 

Итак, я думаю, каждый раз, когда я устанавливаю myView на allDatas, он повторно инициализирует класс datas = fetchDataModel () и устанавливает все его значения в 0. Есть ли способ избежать эта проблема?

...