Sauvegarde NSArray
mac_manu
Membre
Bonjour à tous,
J'ai une petite question: Pour sauvegarder mes données de mon array, je procède actuellement via NSCoder et ses méthodes initWithCoder et encodeWithCoder. Est-il possible de sauvegarder mes données d'une autre façon, de manière à pouvoir récupérer le fichier ainsi crée pour l'utiliser dans un doc Excel par exemple? Si oui, avez vous un petit ex. de code?
Merci et... à bientôt. :adios!:
J'ai une petite question: Pour sauvegarder mes données de mon array, je procède actuellement via NSCoder et ses méthodes initWithCoder et encodeWithCoder. Est-il possible de sauvegarder mes données d'une autre façon, de manière à pouvoir récupérer le fichier ainsi crée pour l'utiliser dans un doc Excel par exemple? Si oui, avez vous un petit ex. de code?
Merci et... à bientôt. :adios!:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
donc le datasource renvoie cet nsnumber à la checkbox (dans tableView:objectValueForTableColumn:row:) ou en reçoit un quand on clique sur la checkbox (dans tableView:setObjectValue:forTableColumn:row:).
donc en fait rien de magique, tu as réellement un nsnumber dans le dico, mais simplement la colonne correspondante du tableau affiche une checkbox...
donc ta méthode est bonne...
cqfd
Tu peux sauvegarder en XML (le fichier peut être lu avec n'importe quel traitement de texte).
As-tu initialisé ton array ?
myArray doit correspondre à l'objet root de ton fichier (visible avec PropertyList Editor)
writeToFile: atomicaly: comme d'autres méthodes de lecture/écriture XML est une méthode implémentée autant par NSArray que d'autres property list objects comme les NSStrings et les NSDictionary.
La variable type doit normalement contenir le type que tu as définit comme celui des fichiers que ton appli peut lire. Si tu veux rester lisible de façon transparente par tout éditeur xml tu peut tout simplement y mettre @plist.
Pour les float, tu peux les mettre dans un NSNumber je pense.
qui seront :
<key>Bool</key>
<true/>
ou
<key>Bool</key>
<false/>
dans le plist.
de même pour les int, float, double...
Bein pour les Bool, moi j'ai simplement fait :
[tempDict setObject: [dict objectForKey:@paysBool] forKey:@paysBool];
puis mon writeToFile,
et là , ma clé étant une checkbox, ça sauvegarde avec true ou false.
ou alors j'ai loupé quelque chose ....
ou plutôt, ton object dans le dico "dict", pour la clé @paysbool, est une checkbox... c'est ça ? et dans ce cas, il se pourrait que le writeToFile demande une valeur à chacun des objets, et ton checkbox renvoie un nsnumber avec un bool... ?
Décidement l'objectiveC ça me laissera toujours perplexe, c'est pas un langage ça, c'est de la magie noire ( de plus, à mon avis dans 15 jours tu comprends même plus ce que t'a voulu faire !)
Oui, c'est ça. paysBool est l'identifier de colonne et la clé du dico. Dans les cellules, on a les checkbox et apparemment, il convertit tout seul en Bool !
Ce code m'écrit bien </true> ou </false> pour ma clé paysBool, je confirme.
En fait c'est de la prestidigitation ;D
[tempDict setObject: [dict objectForKey:@paysBool] forKey:@paysBool];
Et ça me coche bien les bonnes cases...
[monDico setObject: [NSNumber numberWithBool: etatDuCheckBox] forKey:@paysBool]
C'est magique. :-)
Juste : [tempDict setObject: [dict objectForKey:@paysBool] forKey:@paysBool];
Et comme ma colonne est une colonne de checkbox, il comprend tout seul.
Dans le dataSource pour setObjectValue , anObject est du type NSNumber pour un NSButtonCell ( correspondant à [buttonCell intValue] ) et effectivement c'est transparent
(ma suis gourer, j'croyais que anObject était du type NSButtonCell )