iCloud + CoreDate + File

CeetixCeetix Membre
mars 2012 modifié dans API UIKit #1
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 !
Mots clés:

Réponses

  • muqaddarmuqaddar Administrateur
    mars 2012 modifié #2
    En voilà  une bonne question.



    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.
  • APAP Membre
    Intéressant en effet, j'ai aussi un projet dans le genre mais je me demandais si une base de donnée était bien gérée par iCloud (en fait je me demande comment il fait pour gérer)
  • 'muqaddar' a écrit:


    Mais par exemple, un record avec toutes ses dépendances relationnelles serait p-e plus idéal !




    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.
  • muqaddarmuqaddar Administrateur
    J'entends rien par là . :-)

    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...
  • Tu brises mes rêves :'(

    Je voulais utiliser Core Data et je vais devoir gérer moi même la synchro. Du webservice avec authentification ?
  • muqaddarmuqaddar Administrateur
    Je comprends pas.



    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)
  • Bah oui mais les colères des dev c'est souvent justifié, et j'imagine que c'est le genre de truc que tu peux même pas contourner. Il faut attendre sagement qu'Apple corrige le truc.

    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 image/smile.png' class='bbc_emoticon' alt=':)' />
  • 'Ceetix' a écrit:


    Bah oui mais les colères des dev c'est souvent justifié, et j'imagine que c'est le genre de truc que tu peux même pas contourner. Il faut attendre sagement qu'Apple corrige le truc.




    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.
  • muqaddarmuqaddar Administrateur
    'Ceetix' a écrit:


    C'est possible de tout extraire d'icloud et de procéder à  une copie sur ce site externe ? J'imagine que oui image/smile.png' class='bbc_emoticon' alt=':)' />




    T'auras pas besoin d'extraire si c'est déjà  en local sur tous les devices.
  • ouai j'avoue. Thanks image/smile.png' class='bbc_emoticon' alt=':)' /> Go go go alors !
  • muqaddarmuqaddar Administrateur
    Sinon, je me disais, je suppose qu'on ne peut pas "attaquer" iCloud à  partir d'un autre serveur. Je suppose qu'Apple bride ça pour que ça ne serve que pour les iDevices ?
  • A mon avis, et venant d'Apple ... Non ça n'est pas possible image/smile.png' class='bbc_emoticon' alt=':)' />
  • Je me bats avec iCloud depuis le mois de janvier, je confirme que ma méthode proposé une le forum d'Apple ne fonctionne pas bien:

    https://devforums.apple.com/thread/126670?tstart=0
  • APAP Membre
    une alternative à  iCloud pour ce genre de chose (genre en pasant par DropBox)?
Connectez-vous ou Inscrivez-vous pour répondre.