Sauvegarde partielle

FloFlo Membre
05:52 modifié dans API AppKit #1
Bonjour à  tous,

Alors mon problème est le suivant, je souhaiterai sauvegarder un graph de données en écrivant dans le fichier uniquement les données qui ont changées...

En gros l'appli charge un fichier (archive) qui contient le graph et quand l'utilisateur fait des changements et qu'il souhaite les sauvegarder, il me faudrait une méthode pour ne pas réécrire intégralement le fichier mais juste modifier les parties nécessaires. Est-ce possible en utilisant NSKeyedArchiver/NSKeyedArchiver ? Ou est-ce que je peux me brosser ?

J'ai cherché dans la doc apple mais rien de bien concluant... merci d'avance pour vos réponses et vive oc !

Réponses

  • AliGatorAliGator Membre, Modérateur
    05:52 modifié #2
    Avec NSKeyedArchiver direct à  ma connaissance je pense pas (mais j'ai jamais cherché à  le faire en mm temps), mais par contre pourquoi ce besoin ? Parce que ton graphe est grand ? La méthode pour comparer le graphe sauvé et le graphe actuel risque en mm temps peut-être de prendre autant de temps que de tout réécrire directement sans avoir à  comparer...

    Sinon si c'est vraiment gros tu peux peut-être changer ton format de sauvegarde et découper tes données en plusieurs sous-fichiers. Et faire un "bundle" en fait, qui contiendrait tout ce qu'il faut en un seul bloc.

    Un peu par exemple comme Carnet d'Adresses qui, il me semble, stocke un fichier qui liste les identifiants des contacts et des groupes, puis un fichier par groupe de contacts ainsi qu'un fichier par contact. Comme ça si tu changes juste un contact, ça n'a qu'à  réécrire le fichier correspondant à  sa fiche sur le disque et c'est tout. Tu peux pas faire un truc équivalent de ton côté, selon les infos et la structure que tu as à  sauvegarder ?
  • CéroceCéroce Membre, Modérateur
    05:52 modifié #3
    ça ne me semble pas non plus possible avec les NSArchiver. Tu souhaites conserver un historique des modifications, c'est ça ?
  • FloFlo Membre
    05:52 modifié #4
    Ben c'est à  dire que chaque noeud du graphe sait s'il à  été modifié ou pas depuis son chargement et je me demandais s'il n'existait pas un moyen de profiter de ça pour ne pas réécrire tous les noeuds à  chaque sauvegarde.

    Le graphe n'est pas spécialement grand, c'était juste par soucis d'optimisation... j'avais pensé à  travailler sur une NSMutableData conservée qu'on modifie à  chaque fois mais c'est beaucoup trop gourmand en mémoire. Je ne souhaite pas particulièrement garder l'historique des modifications...

    Tant pis, je réécrirai tous à  chaque coup où si les données deviennent trop importantes, je penserai aux fichiers séparés, merci !
  • ChachaChacha Membre
    05:52 modifié #5
    dans 1233857389:

    Ben c'est à  dire que chaque noeud du graphe sait s'il à  été modifié ou pas depuis son chargement et je me demandais s'il n'existait pas un moyen de profiter de ça pour ne pas réécrire tous les noeuds à  chaque sauvegarde.

    La solution c'est Core Data si chaque noeud est un NSManagedObject.

    +
    Chacha
Connectez-vous ou Inscrivez-vous pour répondre.