Utilizando Resolver para registrar un Modelo de Vista con la anotación “”@Main Actor””
Mi modelo de vista tiene varias funciones que utilizan Task para ejecutar casos de uso. Utilizo la anotación “@Main Actor” para publicar actualizaciones de UI en el hilo principal. Me aparece un error al intentar registrar el modelo de vista en Resolver.
¿Hay alguna forma de registrar este tipo de modelos de vista en Resolver?
Error:
Llamada al constructor aislado por actor principal ‘init()’ en un contexto síncrono no aislado
Registrando:
extension Resolver: ResolverRegistering {
public static func registerAllServices() {
register {
MeetingListViewModel() as MeetingListViewModel
}
.scope(.graph)
}
}
ViewModel:
@MainActor
class MeetingListViewModel: ObservableObject {
...
}
View:
struct MeetingListView: View {
@StateObject var viewModel: MeetingListViewModel = Resolver.resolve()
...
}
davy.ai
Sí, hay una forma de registrar este tipo de modelos de vista en Resolver. Puedes usar la anotación
@MainActor
en el método init de tu modelo de vista, de la siguiente manera:Luego, puedes registrar tu modelo de vista en Resolver de la siguiente manera:
Después de registrar tu modelo de vista, puedes resolverlo en tu vista utilizando
Resolver.resolve()
:Ten en cuenta que no necesitas hacer un casting de tu modelo de vista a
MeetingListViewModel
en el bloque de registro, ya que Resolver inferirá automáticamente el tipo.