Archivage d'un tableau de classe
Cyberbob
Membre
Bonjour à tous..
J'ai regardé ce qu'il a été dis sur le forum, et je n'ai pu trouver une explication complète.
Voila, j'ai une classe , nommée cQueue, qui contient des strings et un tableau de classe cAction.
Je souhaiterais donc archiver un NSMutableArray de cQueue. J'ai bien compris que je ne pouvais pas stocker des types autres que ceux stockables dans un plist.
Mais, je n'ai pas trouvé de façon clair, quel étaient les méthodes à surcharger pour que tout ceci fonctionne. J'arrive a enregistrer mon tableau de cQueue, mais je ne pense pas utiliser la bonne méthode. Est ce que qq'un pourrait m'expliquer par l'exemple le schéma de fonctionnement pour charger et sauvegarder mon tableau ?
Merci bcp !
J'ai regardé ce qu'il a été dis sur le forum, et je n'ai pu trouver une explication complète.
Voila, j'ai une classe , nommée cQueue, qui contient des strings et un tableau de classe cAction.
Je souhaiterais donc archiver un NSMutableArray de cQueue. J'ai bien compris que je ne pouvais pas stocker des types autres que ceux stockables dans un plist.
Mais, je n'ai pas trouvé de façon clair, quel étaient les méthodes à surcharger pour que tout ceci fonctionne. J'arrive a enregistrer mon tableau de cQueue, mais je ne pense pas utiliser la bonne méthode. Est ce que qq'un pourrait m'expliquer par l'exemple le schéma de fonctionnement pour charger et sauvegarder mon tableau ?
Merci bcp !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Regarde du côté du protocole NSCoding, qui fait surcharger encodeWithCoder: et initWithCoder:
ça permet d'utiliser la sérialisation des NSArchiver/NSUnarchiver.
+
Chacha
Je te montre mon code...
dans ma classe cQueue, j'ai donc
Ainsi, dans mon autre classe, celle qui contient le tableau de cQueue je fais :
Et pour le chargement, j'ai essayé ça, mais ça ne marche pas...
Ok, quelques erreurs, donc :
Non, la gestion de la mémoire nous dit plutôt de faire :
[/quote]
Quel est le type de l'objet dataToSave ? Si c'est un NSData, il ne connaà®t pas addObject !
Ben là , non, il n'y a aucune décodage de fait, tu récupères juste un NSData depuis le fichier.
Je pense que tu fais des confusions entre ce qu'il faut sauver, le NSData intermédiaire, et les méthodes d'encodage.
-le protocole NSCoding permet de transformer n'importe quel objet en NSData, grace à NSArchiver, tandis que NSUnarchiver va recréer l'objet à partir du NSData
-pour sauvegarder un NSData, writeToFile fonctionne très bien
-les objets des plist de Cocoa (NSString, NSData, NSArray, NSDictionary) répondent au protocole NSCoding, ce qui fait que si on leur applique un NSArchiver, ils vont transmettre la sérialisation en cascade à leur contenu. Donc si un NSArray contient un objet quelconque répondant à NSCoding, il suffit d'encoder le NSArray.
-pour sauvegarder des objets de plist, il existe effectivement des méthodes court-circuitant les appels à NSArchiver, mais tu ne peux les appliquer dans ton cas.
+
Chacha
En revanche, je ne sais pas comment lire chaque data de ma classe pour les remettre ensuite dans une array, lors de mon chargement.
Ok pour le retain, je viens aussi de le voir sur le site d'apple.
Ben justement, tu n'as pas besoin de le faire !
Supposons que tu aies un NSArray A, contenant des objets à toi : O1, O2... implémentant NSCoding.
Il te suffit de faire :
+
Chacha
Bref, je suis content, vive le Cocoa, même si en Java c'est plus facile lol !
Et mon maà®tre étant Bru, je te laisse en déduire la conséquence par transitivité !
Absolument ! C'est pour ça que j'ai d'abord simplement essayé de clarifier au lieu de donner la réponse. Bravo à toi pour avoir bien cerné les solutions tout seul.
Argh! Le mot Java me hérisse le poil !
+
Chacha