Я пытаюсь понять потоки данных в swiftUI.
Я создал ViewModel, которая содержит некоторые данные из сетевого запроса.
import SwiftUI
struct breakdown: Decodable {
var sms: Int
var im: Int
var total: Int
}
struct weeklyOverviewStruct: Decodable {
var data: [breakdown]
}
class WeeklyOverviewViewModel: ObservableObject {
@Published var overviewData: weeklyOverviewStruct?
func getBreakdown(){
semaphore.wait()
Network.Request(method: .GET , parameters: nil, endPoint: "rest/operator/stats/weekly/breakdown", completion: {
result,error in
if(error == nil){
do {
let breakdown = try JSONDecoder().decode(weeklyOverviewStruct.self, from: result!)
DispatchQueue.main.async {
self.overviewData = breakdown
}
}catch{
print("Json Error")
}
}else{
print("\(error!)")
}
})
}
}
Насколько я понимаю, я могу наблюдать эту ViewModel во втором представлении, и представление будет перерисовываться заново. если ViewModel изменяется:
struct SecondView: View {
@ObservedObject var WeeklyOverviewVM = WeeklyOverviewViewModel()
var body: some View {
Text(String.init(describing: WeeklyOverviewVM.overviewData?.data[0].total))
}
}
Если, однако, второе представление представлено после вызова getBreakDown (), наблюдается наблюдаемый объект равен нулю.
Существует ли способ сохранения данных, чтобы даже если представление вызывается после вызова функции getBreakdown (), данные из предыдущего запроса можно наблюдать во втором представлении?