iCloud + CoreDate + File
Bonsoir tout le monde,
J'ai déjà une petite idée de comment procéder mais j'aimerai savoir comment vous feriez pour envoyer sur le cloud des info contenues dans une base de données avec en plus un fichier style image.
J'avais pensé à formater l'ensemble de ma BDD en un fichier style JSON puis à envoyer séparément les images correspondants aux entrées de cette BDD. Est-ce qu'il y a un moyen de tout mettre ensemble ?
Je ne sais pas trop si je prends la bonne direction.
Thanks !
J'ai déjà une petite idée de comment procéder mais j'aimerai savoir comment vous feriez pour envoyer sur le cloud des info contenues dans une base de données avec en plus un fichier style image.
J'avais pensé à formater l'ensemble de ma BDD en un fichier style JSON puis à envoyer séparément les images correspondants aux entrées de cette BDD. Est-ce qu'il y a un moyen de tout mettre ensemble ?
Je ne sais pas trop si je prends la bonne direction.
Thanks !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Le coup du fichier JSON ou PLIST peut être sympa. Mais par exemple, un record avec toutes ses dépendances relationnelles serait p-e plus idéal !
Pourquoi veux-tu mettre tout ça dans un package? Tu peux très bien avoir les fichiers JSON et les fichiers Image à côté. Je suppose qu'iCloud se sert des dates de modifications des fichiers pour synchroniser.
Sinon, tu dois pouvoir fabriquer des packages comme sur Mac (jamais fait su iOS) ou bien peut-être un fichier zip tout bête pour tout mettre ? (mais il faudra décompresser si tu synchronises ce qui semble bien compliqué).
Après je ne connais pas ton type de database source... SI c'est du CoreData, il y a des API pour ça.
Qu'entends-tu par ça ?
Imagine tu veux une app qui prend des photos, tu peux mettre un titre et une description mais tu as aussi cette app sous Mac OS. Tu veux qu'un nouvel event (ajout d'une photo + titre + description) sur l'une des deux versions soit automatiquement mis sur le cloud pour ensuite être récupérée par l'autre application.
Dans ce cas tu fais quoi ? Tu extrais toutes les données de ta BDD à chaque fois et tu formates ça en JSON ou autre et tu envoies la photo prise ? Ou tu peux juste récupérer ton entrée, la formater en requête SQL et la mettre dans un fichier que tu lira et exécuteras par l'autre app. Si CoreData gère le cloud très bien il suffit donc de juste envoyer la photo et l'OS, lui, s'occupe de mettre ta nouvelle entrée sur le cloud.
En tout cas il faut bien veiller à ce que ton nom d'image soit unique (genre date + autres info) pour lever toute ambiguité. Enfin ce n'est pas trop le sujet.
J'ai une base de données SQLite, et j'ai opté pour un Cloud perso... Si ce n'est pas du Coredata, ça va être très chaud de synchroniser une pure base SQLite avec iCloud.
Donc l'idée, c'était de fractionner la base en fichiers JSON: 1 record = 1 fichier JSON
Après, tu peux éventuellement associer les dépendences relationnelles dans le même fichier JSON (par exemple, si ton event avait X photos, tu pourrais mettre un array de la liste des photos dans le json de l'event).
Le problème de tout ça, c'est que si ton app travaille sur la base SQLite elle-même, il faut développer un moteur de conversion/extraction json => sqlite, sqlite => json, puisque iCloud ne va synchroniser que les fichiers JSON.
iCloud n'est pas si magique que ça si on utilise pas CoreData: c'est très bien pour synchroniser des fichiers, mais pour une base, vu qu'on ne doit pas synchroniser le fichier de la base intégralement, je vois pas 36 solutions. Et de plus, des développeurs se plaignent de bugs entre iCloud et CoreData.
L'inconvénient d'iCloud, c'est que Apple gère tout côté serveur. Si un jour tu veux proposer l'édition de ton event sur un site Internet... tu peux pas. Faudra une autre solution. C'est pour ça que j'ai une sync/cloud perso sur Vinocella. Mais attention, la synchro, c'est vite un cauchemar...
Je voulais utiliser Core Data et je vais devoir gérer moi même la synchro. Du webservice avec authentification ?
Si tu utilises CoreData, c'est parfait avec iCloud ! (juste je signalais quelques colères de développeurs entendus ici ou là sur le sujet)
Bon je vais voir. Pour le moment j'ai pas besoin des entry sur un site externe mais si un jour l'envie me prend de le faire ... C'est possible de tout extraire d'icloud et de procéder à une copie sur ce site externe ? J'imagine que oui /smile.png' class='bbc_emoticon' alt=':)' />
Je n'ai pas vu d'études de cas sur ce problème. J'ose croire - car je vais y venir bientôt sur l'iCloud - que la façon dont on gère son graphe peut avoir une incidence sur la synchro.
T'auras pas besoin d'extraire si c'est déjà en local sur tous les devices.
https://devforums.apple.com/thread/126670?tstart=0