Un View Model nos ayuda a separar la lógica de negocios de la vista. Esto resultará en un código más fácil de manejar y organizado. Empezaremos creando una estructura adecuada para nuestra aplicación.
¿Cómo estructurar el proyecto?
Primero que nada, debemos organizar nuestro proyecto adecuadamente. Sigamos los pasos:
Crear carpeta: comienza creando una nueva carpeta dentro de views llamada NCreateNote.
Mover archivos: mueve NCreateNoteView a esta nueva carpeta.
Crear un View Model: dentro de la carpeta, crea un archivo Swift llamado NCreateNoteViewModel.
Con esta estructura, garantizamos que cada componente de nuestra aplicación tenga su propio espacio y responsabilidad, lo cual simplifica el mantenimiento del proyecto.
¿Cómo crear un View Model?
El siguiente paso es crear y configurar nuestro View Model:
Definición de la clase: añadimos una clase llamada NCreateViewModel que será de tipo ObservableObject.
Actualizar referencias: asegúrate de que en toda la vista, las referencias sean a través del viewModel.
varbody: some View{TextField("Título",text: $viewModel.title)// Continúa con las otras propiedades...}
Utilizar función desde el View Model: cambia la creación del card para que lo haga mediante viewModel.createNote().
Con estos cambios, el código del formulario se ve más limpio y mantiene una clara separación entre la lógica de negocio y la interfaz de usuario.
¿Por qué usar @StateObject?
Finalmente, es importante entender por qué se utiliza @StateObject y no @State. Cuando se observa un conjunto de datos o un modelo más complejo, se necesita @StateObject. Esto es crucial para administrar la vida útil del objeto y garantizar que la vista tenga acceso a datos reactivos y bien manejados a medida que cambian.
Aprovechando este proceso de refactorización, incorporamos mejoras como isFavorite al modelo NCard, permitiendo mayor flexibilidad y capacidad para futuras actualizaciones.
Prueba de funcionalidad
Al probar el formulario, deberías ver que, al guardar una nota, el print en la consola mostrará los elementos del NCard correctamente reflejados con atributos como isFavorite. Esta refactorización refuerza un enfoque modular y mantenible, esencial para el desarrollo profesional en Swift.
¡Continúa aprendiendo y aplicando buenas prácticas en tus futuros desarrollos!