Mini intro a Core Data
★ Core Data =
persistencia de
objetos
★ Piezas fundamentales:
๏ Managed Object Model
๏ Persistent Store
๏ Persistent Store
Coordinator
๏ Managed Object Context
๏ Managed Object
La foto de Core Data
MO MO MO MO MO
Managed Object Context
Persistent
Store Coordinator Managed Object
Model
Persistent Persistent
Store Store
Mini intro a iCloud
★ Almacena tus datos y
los redistribuye a
todos tus
dispositivos.
๏ Independiente de la
app.
★ Tres mecanismos
๏ Key-value store
๏ UIDocument /
UIManagedDocument
๏ Core Data
Key-Value store
★ Almacenamiento tipo pList.
★ Limitado a 64k.
★ Sin conflictos = el último
gana.
★ Idealpara las preferencias
comunes no críticas.
8
Documentos
★ Contenedor ubicuo
★ NSMetadataQuery para buscar y ver
★ Implementa NSFilePresenter y usa
NSFileCoordinator para coordinar.
★ Conflictos resueltos a medida.
★ Para documentos distintos
sincronizados individualmente.
9
La foto de iCloud
File 1
NSFilePresenter
File 2
File i
NSFileCoordinator
File n
Core Data
★ Preparada para integrarse con
iCloud
๏ SQLite persitent store (también
Atomic).
๏ Base de datos local.
๏ Sólo migraciones lightweight.
★ Para aplicaciones tipo
biblioteca (“shoebox”)
11
La foto de iCloud
NSPersistentStoreDidImportUbiquitousContentChangesNotification
logs =
cambios
La foto de iCloud
NSPersistentStoreDidImportUbiquitousContentChangesNotification
logs =
cambios
NSFilePresenter
File 1
NSFileCoordinator File i
File n
Core Data con iCloud
★ Casi todo se mantiene igual.
★ Cada persistent store se añade con las
opciones:
‣ NSPersistentStoreUbiquitousContentURLKey
‣ NSPersistentStoreUbiquitousContentNameKey
★ Al añadir el persistent store
๏ Asíncronamente.
๏ Con sección crítica (lock/unlock).
★ Atender a la notificación:
‣ NSPersistentStoreDidImportUbiquitousContentChangesNotification
15
El resto de ficheros
★ Los correspondientes view
controllers implementan
NSFilePresenter.
★ Los ficheros se acceden y
modifican con
NSFileCoordinator.
18
Inicio asíncrono
★ Al conectarse a Core Data la
primera vez, puede haber
datos ya enviados desde otros
dispositivos.
★ La creación del persistent
store debe ser asíncrona (GCD
es tu amigo).
20
Depuración
★ Sólose puede probar en los
dispositivos.
★ Perono es necesario 2 (al
menos al principio).
๏ Se puede sincronizar con Mac OS
X.
21
Datos iniciales
★ Sin iCloud: Persistent store
precreado en el bundle y copiado a
NSDocumentDirectory (o Library).
★ Eso no funciona con iCloud porque
sólo se transmiten los cambios al
persistent store.
★ EXPERIMENTANDO CON:
‣ migratePersistentStore:toURL:options:withType:error:
‣ NSMetadataQuery
22