SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
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!

Contenu connexe

Plus 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
 

Plus 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
 

Dernier

How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 

Dernier (11)

How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 

Core data + i cloud

  • 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