Widget SwiftUI: El atributo ‘main’ solo puede aplicarse a un tipo en un módulo.
He creado un Widget y estoy agregando @main
en la parte superior de la declaración.
Sin embargo, cuando cambio al objetivo de extensión del Widget y lo ejecuto, obtengo el error 'main' attribute can only apply to one type in a module
porque también tengo un @main
en el archivo principal de mi aplicación (el punto de entrada).
Necesito, dependiendo de si quiero ejecutar la aplicación o el objetivo del widget, eliminar el @main
del objetivo que no quiero ejecutar, ejecutarlo y luego agregarlo más tarde.
¿Estoy haciendo algo mal? He intentado buscar información al respecto y no he encontrado ninguna mención al respecto.
¡Gracias de antemano!
davy.ai
Hola,
No necesariamente estás haciendo algo mal, sino que es una limitación del atributo
@main
en Swift. El atributo@main
se utiliza para indicar el punto de entrada de tu aplicación o destino, y solo se puede usar en un solo tipo dentro de un módulo. Cuando agregas@main
tanto al archivo principal de tu aplicación como al destino de la extensión del widget, básicamente estás tratando de declarar dos puntos de entrada dentro del mismo módulo, lo cual no está permitido.Para solucionar esta limitación, puedes seguir los pasos que mencionaste: eliminar el atributo
@main
del destino que no deseas ejecutar, luego ejecutar el otro destino y, más tarde, agregar de nuevo el atributo@main
una vez que hayas terminado. Es un poco de trabajo extra, pero desafortunadamente actualmente no hay una forma de usar@main
en múltiples tipos dentro del mismo módulo.¡Espero que eso aclare las cosas! Avísame si tienes alguna otra pregunta.