Archivo de la etiqueta: CoreData

[2016 Aug] Core Data, migrations to App Group Container

Cuando necesitamos que dos Apps utilicen los mismos datos vamos a tener que darles la capacidad de compartir un mismo repositorio de datos.

Core Data puede manejar varias opciones, pero en general, podemos considerar que se trata de un archivo sqlLite

No solo es el caso en el que tengamos dos apps, que muy probablemente sean de la misma empresa, sino que un App Extension también puede ser considerada como un segundo App, en la perspectiva del acceso a datos.

Para esto vamos a necesitar crear un App Group y asignarlo, desde los properties del target del Extension y del App principal.

Luego nuestra configuración de core data, en AppDelegate y en el código del Extension deben utilizar otro enfoque, así

Luego es similar a cuando se trabaja con CoreDara por default

Algunas validaciones serán necesarias si ya estábamos trabajando inicialmente sin considerar el escenario de App Group Container, entonces habrá que validar la existencia del archivo sqlite.

Y si ya teníamos datos, debemos efectuar una migración

Esta migración no considera el orden de los registros. Y en general, el orden no se lo dejamos a la base de datos, sino a alguna columna con timestamp. Debemos incorporar esa especie de ORDER BY en nuestro query. Se trata de un sortDescriptor.