SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
Core Data + iCloud
     Jorge 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
       MO    MO   MO   MO   MO



      Managed Object Context



             Persistent
         Store Coordinator               Managed Object
                                             Model

Persistent                  Persistent
  Store                       Store
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.
★ 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 + 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


                        TeamID
                      implícito




                 17
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ó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
¡Gracias!

Más contenido relacionado

Más de Jorge Ortiz

Kata gilded rose en Golang
Kata gilded rose en GolangKata gilded rose en Golang
Kata gilded rose en GolangJorge Ortiz
 
CYA: Cover Your App
CYA: Cover Your AppCYA: Cover Your App
CYA: Cover Your AppJorge Ortiz
 
Refactor your way forward
Refactor your way forwardRefactor your way forward
Refactor your way forwardJorge Ortiz
 
201710 Fly Me to the View - iOS Conf SG
201710 Fly Me to the View - iOS Conf SG201710 Fly Me to the View - iOS Conf SG
201710 Fly Me to the View - iOS Conf SGJorge Ortiz
 
Home Improvement: Architecture & Kotlin
Home Improvement: Architecture & KotlinHome Improvement: Architecture & Kotlin
Home Improvement: Architecture & KotlinJorge Ortiz
 
Architectural superpowers
Architectural superpowersArchitectural superpowers
Architectural superpowersJorge Ortiz
 
Architecting Alive Apps
Architecting Alive AppsArchitecting Alive Apps
Architecting Alive AppsJorge Ortiz
 
iOS advanced architecture workshop 3h edition
iOS advanced architecture workshop 3h editioniOS advanced architecture workshop 3h edition
iOS advanced architecture workshop 3h editionJorge Ortiz
 
Android clean architecture workshop 3h edition
Android clean architecture workshop 3h editionAndroid clean architecture workshop 3h edition
Android clean architecture workshop 3h editionJorge Ortiz
 
To Protect & To Serve
To Protect & To ServeTo Protect & To Serve
To Protect & To ServeJorge Ortiz
 
Clean architecture workshop
Clean architecture workshopClean architecture workshop
Clean architecture workshopJorge Ortiz
 
Escape from Mars
Escape from MarsEscape from Mars
Escape from MarsJorge Ortiz
 
Why the Dark Side should use Swift and a SOLID Architecture
Why the Dark Side should use Swift and a SOLID ArchitectureWhy the Dark Side should use Swift and a SOLID Architecture
Why the Dark Side should use Swift and a SOLID ArchitectureJorge Ortiz
 
Dependence day insurgence
Dependence day insurgenceDependence day insurgence
Dependence day insurgenceJorge Ortiz
 
Architectural superpowers
Architectural superpowersArchitectural superpowers
Architectural superpowersJorge Ortiz
 
TDD for the masses
TDD for the massesTDD for the masses
TDD for the massesJorge Ortiz
 
7 Stages of Unit Testing in iOS
7 Stages of Unit Testing in iOS7 Stages of Unit Testing in iOS
7 Stages of Unit Testing in iOSJorge Ortiz
 
Building for perfection
Building for perfectionBuilding for perfection
Building for perfectionJorge Ortiz
 
TDD by Controlling Dependencies
TDD by Controlling DependenciesTDD by Controlling Dependencies
TDD by Controlling DependenciesJorge Ortiz
 
Unit testing in swift 2 - The before & after story
Unit testing in swift 2 - The before & after storyUnit testing in swift 2 - The before & after story
Unit testing in swift 2 - The before & after storyJorge Ortiz
 

Más de Jorge Ortiz (20)

Kata gilded rose en Golang
Kata gilded rose en GolangKata gilded rose en Golang
Kata gilded rose en Golang
 
CYA: Cover Your App
CYA: Cover Your AppCYA: Cover Your App
CYA: Cover Your App
 
Refactor your way forward
Refactor your way forwardRefactor your way forward
Refactor your way forward
 
201710 Fly Me to the View - iOS Conf SG
201710 Fly Me to the View - iOS Conf SG201710 Fly Me to the View - iOS Conf SG
201710 Fly Me to the View - iOS Conf SG
 
Home Improvement: Architecture & Kotlin
Home Improvement: Architecture & KotlinHome Improvement: Architecture & Kotlin
Home Improvement: Architecture & Kotlin
 
Architectural superpowers
Architectural superpowersArchitectural superpowers
Architectural superpowers
 
Architecting Alive Apps
Architecting Alive AppsArchitecting Alive Apps
Architecting Alive Apps
 
iOS advanced architecture workshop 3h edition
iOS advanced architecture workshop 3h editioniOS advanced architecture workshop 3h edition
iOS advanced architecture workshop 3h edition
 
Android clean architecture workshop 3h edition
Android clean architecture workshop 3h editionAndroid clean architecture workshop 3h edition
Android clean architecture workshop 3h edition
 
To Protect & To Serve
To Protect & To ServeTo Protect & To Serve
To Protect & To Serve
 
Clean architecture workshop
Clean architecture workshopClean architecture workshop
Clean architecture workshop
 
Escape from Mars
Escape from MarsEscape from Mars
Escape from Mars
 
Why the Dark Side should use Swift and a SOLID Architecture
Why the Dark Side should use Swift and a SOLID ArchitectureWhy the Dark Side should use Swift and a SOLID Architecture
Why the Dark Side should use Swift and a SOLID Architecture
 
Dependence day insurgence
Dependence day insurgenceDependence day insurgence
Dependence day insurgence
 
Architectural superpowers
Architectural superpowersArchitectural superpowers
Architectural superpowers
 
TDD for the masses
TDD for the massesTDD for the masses
TDD for the masses
 
7 Stages of Unit Testing in iOS
7 Stages of Unit Testing in iOS7 Stages of Unit Testing in iOS
7 Stages of Unit Testing in iOS
 
Building for perfection
Building for perfectionBuilding for perfection
Building for perfection
 
TDD by Controlling Dependencies
TDD by Controlling DependenciesTDD by Controlling Dependencies
TDD by Controlling Dependencies
 
Unit testing in swift 2 - The before & after story
Unit testing in swift 2 - The before & after storyUnit testing in swift 2 - The before & after story
Unit testing in swift 2 - The before & after story
 

Último

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 

Último (15)

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 

Core Data + iCloud: guía paso a paso para integrar la persistencia de objetos con iCloud

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