SwiftUI изменение объекта окружающей среды воссозданный наблюдаемый объект в том же виде

#swiftui #environment #combine #observedobject #environmentobject

Вопрос:

Итак, у меня есть несколько шагов, последний из которых содержит объект EnvironmentObject и объект ObservedObject. Проблема в том, что когда я пытаюсь изменить объект EnvironmentObject (полоса 68), он воссоздает объект ObservedObject. Может ли кто — нибудь объяснить мне, почему это происходит? Любое решение, чтобы сохранить мой объект наблюдения в исходном состоянии?

Насколько я знаю, можно изменить ObservedObject на StateObject, но я использую iOS 13 so… Мне нужно другое решение.

введите описание изображения здесь

Ответ №1:

Строка 47 — тело переоценено, поэтому создается новый экземпляр ObservedStuff , поэтому сделайте его свойством и передайте его, например

 struct TestView_A: View {
   ...
   private let model = ObservedStuff()

   var body: some View {
      NavigationLink(destination: TestView_B(viewModel: self.model) ...
   }
}
 

Комментарии:

1. вопрос, но все равно будет оценено, если я уберу if с 47-й полосы и переведу его на 54-ю полосу?

2. Да, конечно, потому TestView_B что воссоздан в этом месте.