CoreData et BDD sur serveur distant!
elf
Membre
Salut,
Je voulais savoir si l'un de vous avais de l'experience en CoreData. Est-ce possible d'utiliser une base de données distante comme source pour CoreData? (Un fichier sql ou xml (ça dépend du type de CoreData que je choisis) sur un serveur http) (Cette BDD serais éditée par un logiciel admin)
Merci d'avance,
elf
Je voulais savoir si l'un de vous avais de l'experience en CoreData. Est-ce possible d'utiliser une base de données distante comme source pour CoreData? (Un fichier sql ou xml (ça dépend du type de CoreData que je choisis) sur un serveur http) (Cette BDD serais éditée par un logiciel admin)
Merci d'avance,
elf
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Donc à mon avis il faut le faire soi même.
J'avais fait une petite appli avec uniquement des bindings et CoreData (but = sans une ligne de code), mais je voulais pouvoir lire des fichiers XML (à un format donné) et exporter ma base en XML (en suivant ce même format) : j'ai été obligé de taper un petit bout de code pour gérer le chargement et la sauvegarde de ma "base" (ce sont les seules lignes de code de cette appli d'ailleurs).
En même temps pour le peu de lignes de code que ça prend en général...
ça y est, j'ai retrouvé un endroit dans la doc qui en parle :
Core Data Programming Guide > Core Data Basis > Persistent Stores
+
Chacha
Mais c'est une tendance qu'on peut voir dans Tiger: les URLs ont largement pris le pas sur les fichiers (à part pour ce qui touche aux bundles), justement pour permettre à terme de faire abstraction de l'endroit où elle seront stockées réellement les données.
Avec par exemple une Url pointant sur un "fichier de données" observé et gérer par un daemon, ou simplement une autre partie du code, capable d'envoyer comme contenu suposé du "fichier" le résultat d'une requète sur une URL distante ?
Voire même un "fichier de données" directement exécutable qui ferait le boulot (quitte à causer en douce avec l'appli pour savoir que renvoyer).
OK c'est tiré par les cheveux mais p-e réalisable non ?
[EDIT] ou un vrai fichier mis à jour avec le contenu de requètes ?
Bon, OK j'ai toujours été un doux rêveur.
Moi je ferais plutôt un truc genre pipe UNIX. Conjointement avec la commande "curl" qui récupère les données d'un serveur quand on lui donne une URL.
Tu peux essayer si tu veux : tu lances un terminal et tu tapes "mkfifo tempFifo" pour créer la FIFO (tuyau), puis "curl www.google.fr >tempFifo" (commande bloquante tant que tu n'ouvres pas tempFifo en lecture). A ce moment tempFifo (le tuyau) est encore vide, non rempli. Mais dès qu'on va demander de lire le contenu de tempFifo, donc par exemple demander de lire 5 octets, la FIFO va toute seule demander à sa source, donc curl, de lui envoyer 5 octets (enfin c'est pas tout à fait comme ça que ça marche mais symboliquement en gros c'est ça)
Donc tout en laissant la commande "curl www.google.fr >tempFifo", bloquée, tu ouvres une autre fenêtre terminal, et tu tapes "cat tempFifo", ce qui va avoir pour effet d'ouvrir le 'fichier' tempFifo, lire son contenu, et te l'afficher, puis refermer le fichier. Au moment de l'étape "lire le contenu" c'est là que curl remplira la fifo réellement. A l'étape "fermeture du fichier" la FIFO sera fermée en lecture et du coup la commande "curl" de l'autre fenêtre terminal rendra la main.
Mais bon sinon à quoi bon créer ce genre d'outil ou faire ce genre de petite astuce avec curl+ une fifo, quand tu peux le contourner simplement, en récupérant le contenu à une URL distante donnée, pour l'écrire dans un fichier local temporaire, puis lire de ce fichier, puis supprimer le fichier temporaire ? un stringWithContentsOfUrl, un writeToFile vers un fichier temporaire, et basta, non ?
Pourraient-elles permettre donc de tromper la limitation aux file-url ?
Et donc permettre un core data sur BDD sur serveur distant ?
Le seul défaut de cette méthode est un énorme temps de chargement pour le programme...
M'enfin, c'est le seul moyen, non? (J'veux dire, avec les truc a ali et tout si la "boite noir" va être changée ça crée le même 'blêm!)
mais en ce cas, comment pui-je faire pour mettre un écran de chargement pendant le chargement?