Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Core data + i cloud

1,093 views

Published on

Detalles de la aventura de implementar iCloud en una aplicación de iPhone.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Core data + i cloud

  1. 1. Core Data + iCloud Jorge D. Ortiz Fuentes (@jdortiz)
  2. 2. Agenda★ Mini intro a Core Data.★ Funcionamiento de iCloud.★ Integración con iCloud.★ Problemas de implementación. 2
  3. 3. Core Data
  4. 4. 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
  5. 5. La foto de Core Data MO MO MO MO MO Managed Object Context Persistent Store Coordinator Managed Object ModelPersistent Persistent Store Store
  6. 6. iCloud
  7. 7. 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
  8. 8. Key-Value store★ Almacenamiento tipo pList.★ Limitado a 64k.★ Sin conflictos = el último gana.★ Idealpara las preferencias comunes no críticas. 8
  9. 9. 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
  10. 10. La foto de iCloud File 1 NSFilePresenter File 2 File i NSFileCoordinator File n
  11. 11. 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
  12. 12. La foto de iCloud NSPersistentStoreDidImportUbiquitousContentChangesNotification logs = cambios
  13. 13. La foto de iCloud NSPersistentStoreDidImportUbiquitousContentChangesNotification logs = cambios NSFilePresenter File 1 NSFileCoordinator File i File n
  14. 14. Core Data + iCloud
  15. 15. 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
  16. 16. Además del código★ App ID con iCloud activado.★ 16
  17. 17. Además del código 2★ Entitlements TeamID implícito 17
  18. 18. El resto de ficheros★ Los correspondientes view controllers implementan NSFilePresenter.★ Los ficheros se acceden y modifican con NSFileCoordinator. 18
  19. 19. Implementación
  20. 20. 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
  21. 21. 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
  22. 22. 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
  23. 23. ¡Gracias!

×