Download - Core data + i cloud
Core Data + iCloudJorge D. Ortiz Fuentes
(@jdortiz)
Agenda★Mini intro a Core Data.
★Funcionamiento de iCloud.
★Integración con iCloud.
★Problemas de implementación.
2
Core Data
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
PersistentStore
PersistentStore
Persistent Store Coordinator Managed Object
Model
Managed Object Context
MO MO MO MO MO
iCloud
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.
★Ideal para 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
File 2
File i
File n
NSFilePresenter
NSFileCoordinator
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
logs = cambios
NSPersistentStoreDidImportUbiquitousContentChangesNotification
La foto de iCloud
logs = cambios
NSPersistentStoreDidImportUbiquitousContentChangesNotification
File 1
File i
File n
NSFilePresenter
NSFileCoordinator
Core Data + iCloud
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
Además del código★App ID con iCloud activado.
★
16
Además del código 2★Entitlements
17
TeamID implícito
El resto de ficheros★Los correspondientes view controllers implementan NSFilePresenter.
★Los ficheros se acceden y modifican con NSFileCoordinator.
18
Implementación
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ólo se puede probar en los dispositivos.
★Pero no 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
¡Gracias!