Je commence à créer une application sur laquelle je souhaite enregistrer, synchroniser et sauvegarder des données. L'application ne stockera aucun fichier, rien que des données dans une base de données. Il va être iOS 8 et plus, donc je suis capable d'utiliser CloudKit. J'ai fait des recherches et je ne comprends toujours pas comment Core Data, iCloud et CloudKit fonctionnent ensemble.
Autant que de savoir, CloudKit n'est qu'un moyen d'obtenir et de récupérer des données dans/depuis le cloud. CloudKit est-il juste une façon différente de synchroniser des données avec iCloud?
Mes questions sont:
Si j'utilise CloudKit, dois-je toujours créer une base de données de base principale?
Si les données sont uniquement stockées dans le nuage, l'utilisateur pourra y accéder si le périphérique iOS n'est pas connecté à Internet. J'ai lu que CloudKit n'aura qu'une mise en cache limitée.
Si quelqu'un peut en quelque sorte décomposer le travail de chaque technologie dans le processus de sauvegarde et de synchronisation de la base de données de données principale hors ligne et en ligne.
Ma compréhension actuelle est:
Les données de base sont utilisées pour stocker les données localement
iCloud synchronise les données et les stocke dans le cloud
CloudKit donne la possibilité de stocker et de gérer des données dans le nuage?
J'espère avoir fourni suffisamment d'informations pour que cette question ne soit pas fermée.
C'est comme ça:
Si vous souhaitez utiliser CloudKit avec Core Data, vous devez écrire votre propre code personnalisé pour la traduction entre les objets gérés et les enregistrements CloudKit. Ce n'est pas impossible, mais c'est plus de code à écrire. Cela pourrait être plus fiable, mais il est trop tôt pour le dire avec certitude.
J'ai écrit n article de blog décrivant CloudKit du point de vue de quelqu'un ayant déjà utilisé Core Data et iCloud.
Mise à jour , juin 2016: à compter de la documentation la plus récente pour NSPersistentStoreCoordinator
, tout ce qui concerne les données de base avec iCloud est marqué comme obsolète. En conséquence, il devrait probablement être évité pour les nouveaux développements.