iOS Agenda App with CORE DATA
Ejemplo de código para una aplicación de agenda, gestionando el modelo de datos con CoreData.
Built using XCode 13.0 (Swift 5)
¿Cómo ejecutar el proyecto?
- Clona este repositorio
- Abre un terminal y muevete hacia el directorio del proyecto
- Abre
Agenda App.xcodeproj
y ejecuta el proyecto en un simulador o en tu dispositivo.
¿Cómo fue creado?
- Se ha usado el patron de arquitectura MVC
- Se ha creado un CoreDataManager que gestiona el acceso a CoreData y que permite acceder, guardar y gestionar el contexto de CoreData.
- Esta aplicación contiene dos vistas gestionadas por un
NavigationController
, la primera vista una vista principal gestionada porUITableViewController
que presenta en forma detableView
los contactos que han sido guardados en CoreData. - Si haces un swipe left en una de las celdas mencionadas, aparecerá una opción que te permite eliminar el contacto de la agenda y que elimina al momento la fila donde se encuentre ese contacto.
- En la vista principal se encuentra un botón
UIBarButtonItem
que a través de unsegue
te dirigue a una vista detalle dónde se puede añadir un nuevo contacto a la agenda. En caso de guardar el contacto, la vista se encargara de gestionar ese cambio. - Si se hace tap en unas de las celdas de la vista de tabla cargará la vista detalle mencionada anteriormente pero mostrando los datos del contacto que ha sido añadido, teniendo la posibilidad de poder guardar los cambios en ese contacto.
- CoreDataManager usa el patrón de diseño Singleton para acceder a sus funcionalidades.
Código
Cuando la aplicación se ejecuta, en las funciones relativas al ciclo de vida de la app, concretamente el método viewWillAppear
ejecuta unas sentencias que permite hacer un fetch a CoreData obteniendo los contactos que han sido guardados anteriormente, esos datos son asignados a un array llamado searchResults
el cual es usado para cargar los datos en la vista de tabla a través del método tableView.reloadData()
ejecutado en el hilo principal.
Este proyecto no usa librerias de tercero ya que todas las funcionalidades pueden ser creadas de manera nativa.
Saludos!