2014-06-26 14 views
97

Sono nelle prime fasi della creazione di un'app in cui vorrei salvare, sincronizzare e eseguire il backup dei dati. L'app non memorizzerà alcun file solo i dati in un database. Sarà iOS 8 e versioni successive, quindi sono in grado di utilizzare CloudKit. Ho fatto alcune ricerche e ancora non sono chiaro su come Core Data, iCloud e CloudKit lavorino insieme.Utilizzo di Core Data, iCloud e CloudKit per sincronizzazione e backup e come funziona insieme

Per capire che CloudKit è solo un modo per ottenere e recuperare dati da/verso il cloud. CloudKit è solo un modo diverso per sincronizzare i dati con iCloud?

Le mie domande sono:

  1. Se io uso CloudKit, ho ancora bisogno di creare database di dati di base locale?

    • Se sì, verrà automaticamente sincronizzato con iCloud o dovrei chiamare metodi per memorizzare in entrambi i posti?
  2. Se i dati vengono memorizzati solo nel cloud, l'utente potrà accedervi quando il dispositivo iOS non è connesso a Internet. Ho letto che CloudKit avrà solo un caching limitato.

  3. Come funziona se l'account iCloud non è abilitato.

Se qualcuno può abbattere ciò che ogni tecnologia fa nel processo di salvataggio e sincronizzazione del database dei dati di base offline e online.

mia comprensione attuale è:

  • Core Data è utilizzato per memorizzare i dati localmente

  • iCloud sincronizza i dati e li memorizza nel cloud

  • CloudKit dà la possibilità di memorizzare e gestisci i dati nel cloud ??

Spero di aver fornito informazioni sufficienti per questa domanda da non chiudere.

+2

Anche io non ho fatto molte ricerche su di esso, ma ho capito che non si memorizza in locale. È qualcosa di simile al normale servizio client per server. Ecco perché senza internet non puoi accedere al tuo DB. e come per Doc se l'utente non ha abilitato l'account icloud in quel momento puoi solo leggere i dati dal contenitore pubblico – Sachin

+0

@Yan possiamo fare così ti preghiamo di suggerire, http://stackoverflow.com/questions/25600556/cloudkit-can -we-edit-data-of-database pubblico – Nikunj

risposta

170

E 'in questo modo:

  • Core Data di per sé, è completamente locale e non funziona automaticamente con uno qualsiasi dei servizi cloud di Apple.
  • Dati principali con iCloud abilitato attiva la sincronizzazione tramite iCloud. Qualsiasi modifica salvata in Core Data viene propagata al cloud e tutte le modifiche apportate nel cloud vengono scaricate automaticamente. I dati vengono memorizzati sia in iCloud sia in un file di archivio persistente locale, quindi sono disponibili anche quando il dispositivo è offline. Non è necessario scrivere alcun codice specifico per il cloud, è sufficiente aggiungere l'ascolto per le modifiche in entrata (che assomigliano molto alle modifiche apportate in un contesto dell'oggetto gestito diverso).
  • CloudKit non è correlato ai dati principali. Non è un sistema di sincronizzazione, è un sistema di trasferimento. Ciò significa che ogni volta che si desidera leggere/scrivere dati sul cloud, è necessario effettuare chiamate API CloudKit esplicite per farlo. Niente succede automaticamente. CloudKit non memorizza i dati sul dispositivo, quindi i dati non sono disponibili se il dispositivo è offline.CloudKit aggiunge anche alcune funzionalità non disponibili per Core Data con iCloud, come i dati pubblici condivisi e la possibilità di scaricare solo una parte del set di dati invece dell'intera cosa.

Se si desidera utilizzare CloudKit con Core Data, è necessario scrivere il proprio codice personalizzato per tradurre tra oggetti gestiti e record CloudKit. Non è impossibile, ma è più codice da scrivere. È essere più affidabile, ma è troppo presto per dirlo con certezza.

Ho scritto a blog post descrivendo CloudKit dal punto di vista di qualcuno che ha utilizzato Core Data e iCloud in passato.

Aggiornamento, giugno 2016: A partire da the most recent documentation for NSPersistentStoreCoordinator, tutto ciò che riguarda i dati principali con iCloud è contrassegnato come deprecato. Di conseguenza, dovrebbe probabilmente essere evitato per un nuovo sviluppo.

+0

Grazie mille per aver risposto. Questo e 'esattamente quello che stavo cercando. Mi chiedo solo se esiste un qualche tipo di corruzione dei dati che il negozio locale sta per replicare nel cloud? Sarebbe più sicuro archiviare i dati sia in locale che in cloudkit, ma come hai detto sarebbe un problema da sincronizzare e gestire. – Yan

+1

In passato ho avuto problemi con la corruzione quando utilizzo Core Data con iCloud, ma non l'ho usato molto da quando è uscito iOS 7. Dovrebbe essere molto meglio. Con CloudKit è troppo presto per dirlo, dal momento che non è ancora stato rilasciato ufficialmente. –

+0

@TomHarrington può fare questo mi piace suggerire, http://stackoverflow.com/questions/25600556/cloudkit-can-we-edit-data-of-public-database – Nikunj

Problemi correlati