Persistencia en dispositivos móviles - iOS
  • Introduction
  • Persistencia básica
    • El sistema de archivos
    • Serialización de clases
    • Property Lists
    • Preferencias de usuario
    • Ejercicios
  • SQLite
    • Introducción a SQLite en iOS
    • El API básico de SQLite
    • Frameworks de terceros
    • Ejercicios
  • ¡Hola Core Data!. Una aplicación de ejemplo
    • Introducción a Core Data
    • El stack de Core Data
    • Las entidades
    • Recuperar los datos
  • Modelos de datos en Core Data
    • Crear modelos
    • Entidades con clases propias
    • CRUD
    • Ejercicios
  • Más sobre modelos de datos
    • Tipos de datos transformables
    • Validaciones
    • El ciclo de vida de los objetos gestionados
    • Deshacer y rehacer operaciones
    • Ejercicios
  • Búsquedas en Core Data
    • Predicados
    • Ordenación
    • Ejercicios
  • Tablas en Core Data
    • El fetched results controller
    • Inicializar el "fetched results controller"
    • Mostrar los datos en la tabla
    • Refrescar la tabla
    • Secciones de tabla automáticas
    • Ejercicios
  • Migraciones de datos
    • Qué son las migraciones de datos
    • Versiones del modelo de datos
    • Migraciones ligeras
    • Migraciones pesadas
    • Ejercicios
    • Apéndice: migraciones en iOS<=9
  • Contextos múltiples
    • Múltiples contextos para trabajos en background
    • Comunicación entre contextos
    • Contextos anidados
    • Ejercicios
  • Persistencia como servicio
    • Backend as a Service
    • Gestión de usuarios en Firebase
    • Persistencia en Firebase
    • Ejercicios
  • Arquitecturas de aplicaciones en iOS
    • Model/View/Controller
    • Model/View/Presenter
    • Model/View/ViewModel
    • VIPER
    • Ejercicios parte I
    • Ejercicios parte II
    • Ejercicios parte III
Powered by GitBook
On this page

Was this helpful?

  1. Tablas en Core Data

El fetched results controller

Hasta ahora hemos obtenido los datos de Core Data con fetch requests. En principio no es complicado mostrar estos datos en una tabla, ya que como ya hemos visto, al ejecutar una fetch request obtenemos un array. A lo largo del curso hemos usado múltiples veces arrays como fuentes de datos para vistas de tabla. Pero hacer esto presenta una serie de dificultades:

En primer lugar, se pueden dar problemas de rendimiento. Si hay muchos datos, tenerlos todos en un array ocupará demasiada memoria. Una estrategia más inteligente es ir cargándolos a medida que los vamos necesitando (conforme nos vamos desplazando por la tabla), pero vamos a emplear mucho tiempo implementando esta funcionalidad, que no es trivial.

Además, hay que tener en cuenta que los datos pueden cambiar. Cada vez que cambie un dato tenemos que actualizar manualmente la tabla, lo que es tedioso.

La clase FetchedResultsController viene a solucionar todos estos problemas. Por un lado, va a ir obteniendo los datos a medida que sean necesarios, por lotes, o batches. Además los guardará automáticamente en una cache para aumentar la eficiencia. Y por otro se suscribe a los cambios en el contexto para que cuando cambie un objeto lo podamos reflejar de forma sencilla en la tabla. Trabajar con un fetched results controller no va a ser trivial, pero sí mucho más sencillo que si tuviéramos que implementar todas estas funcionalidades nosotros mismos.

PreviousTablas en Core DataNextInicializar el "fetched results controller"

Last updated 6 years ago

Was this helpful?