CoreData: comment partager les données entre plusieurs machines?

Bonjour,


 


J'ai une application iOS avec une base de données CoreData (en swift, développement,).


Je souhaiterai maintenant pourvoir permettre de partager les données, pour l'utilisateur sur ses différentes machines (soit avec le même compte iCloud).


 


Je regarde sur internet, et du coup je suis perplexe, je ne trouve pas de méthode à  la fois standard et officielle, et pérenne...


 


J'ai vu, en particulier:


- iCloud CoreData, mais si j'ai bien compris ça n'a jamais bien fonctionné, et maintenant Apple le déprécie


- Utiliser CloudKit, là  c'est encore plus flou... En lisant la doc de présentation Apple, je comprends que c'est un partage général, une base centralisée , avec même un accès web?


 


Est-ce que quelqu'un a une solution, à  l'heure actuelle, pour ce besoin?


Est-ce qu'il faut à  tout prix que je cherche  un Framework sur GitHub?


 


Merci d'avance de vos bons conseils...


 


Mots clés:

Réponses

  • Si tu veux une solution officielle et pérenne tu peux utiliser CoreData et CloudKit. 


    Pour autant ça n'est pas simple. Il faut définir ton modeÌ€le CoreData et ton modeÌ€le CloudKit. Les deux n'étant pas fait du meÌ‚me bois il va falloir faire le mapping entre les deux à  la main.


     


    Ensuite tout va dépendre de la complexité de tes données. Tu peux avoir des données directement transposables d'une base à  l'autre mais tu vas devoir gérer toi même la partie synchro. 


     


    Les frameworks que tu trouveras sur GitHub feront surement le boulot mais dans une certaine mesure et ça risque d'être difficile à  debugger...


  • La solution officielle c'était iCloud CoreData mais elle ne marche pas ou n'a pas marché assez vite en tous cas.


     


    CloudKit a une partie privée et une partie publique. On peut aussi partager des données avec d'autres utilisateurs depuis iOS 10.


     


    CloudKit t'évite d'avoir à  gérer un serveur toi-même pour centraliser les données, mais d'un autre côté, tu n'as pas accès aux données privées des utilisateurs, ce qui peut parfois être utile pour débugger ou pour du support.


     


    Si tu utilises CoudKit, tu peux prendre un framework qui fait le liant entre Core Data et CloudKit sur github.


    Ou bien le faire toi-même, mais dans ce cas je te conseille de suivre une méthode déjà  éprouvée.


     


    Il existe un framework semi-payant qui se repose sur du partage de fichier intermédiaire via DropBox ou autre stockage cloud (http://www.ensembles.io).

  • Merci à  tous les deux.


     


    Comme mon modèle est tout sauf complexe, je tenterais bien de travailler CloudKit directement.


    Toutefois, du coup j'ai un autre problème, je ne parviens pas à  activer CloudKit dans mon application, je n'ai pas l'option dans les "Capabilities" ...


    En lisant la doc Apple, (pas toujours très claire), j'ai comme l'impression que je devrais activer pour mon compte développeur sur le web, mais je ne peux pas le faire avec un compte développeur gratuit?


  • Je réponds à  ma propre question, si ça peut servir à  d'autres




     


    En lisant la doc Apple, (pas toujours très claire), j'ai comme l'impression que je devrais activer pour mon compte développeur sur le web, mais je ne peux pas le faire avec un compte développeur gratuit?




    En fait, non, pas droit à  CloudKit en gratuit


    https://developer.apple.com/support/app-capabilities/


     


    Pour la partie "Private Database", c'est assez peu compréhensible, mais bon, c'est comme ça :(


  • Salut,


     


    Tu as pensé à  Firebase. Une solution qui propose entre autre service une base de données noSQL partageable entre plusieurs appareils iOS, Android et même website.


  • Joanna CarterJoanna Carter Membre, Modérateur
    N'oublies pas CloudKit JS de la Pomme
Connectez-vous ou Inscrivez-vous pour répondre.