es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La vista de SwiftUI no ve la propiedad de ObservableObject marcada con @Published.

Estoy escribiendo mi aplicación utilizando SwiftUI y VIPER. Y para conservar la idea de VIPER (pruebas, protocolos, etc.) y la reactividad de SwiftUI, quiero agregar una capa más: ViewModel. Mi presentador solicitará datos al interactor y los colocará en el ViewModel, luego la vista simplemente leerá este valor. He verificado si el método que coloca los datos en el ViewModel funciona, y sí lo hace. Pero mi vista simplemente no ve la propiedad del ViewModel (muestra una lista vacía), incluso si cumple con ObservableObject y la propiedad está marcada con Published. Lo que es más interesante es que si almaceno los datos en el presentador y también los marco con publicado (published) y objeto observable (observable object), funcionará. ¡Gracias de antemano!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema parece estar en la forma en que se inicializa el viewModel en BeersListView. El viewModel debería ser inicializado con el decorador @ObservedObject, no @StateObject, ya que el viewModel está siendo actualizado por el presentador.

    Para solucionar esto, cambie la propiedad viewModel en BeersListView a:

    @ObservedObject var viewModel: BeersListViewModel

    De esta manera, la vista será notificada de cualquier actualización en el viewModel y mostrará los datos correctamente.

Comments are closed.