Problème avec NSData et NSKeyedArchiver

clampinclampin Membre
Bonjour,

J'ai décidé de faire quelques test avec NSData et NSKeyedArchiver.

Ce que doit faire ce petit programme, c'est déclarer un array avec deux string et un NSNumber en int, et de le sauver sur le disque dur dans un fichier : voici le code :

<br /><br />#import &lt;Foundation/Foundation.h&gt;<br /><br />int main (int argc, const char * argv&#91;])<br />{<br /><br />&nbsp; &nbsp; NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];<br /><br />&nbsp; &nbsp; NSArray *array = [NSArray arrayWithObjects:@&quot;Bob&quot;, @&quot;Yoda&quot;,[NSNumber numberWithInt:52],nil];<br />&nbsp; &nbsp; NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; [data writeToFile:@&quot;/myfile.txt&quot; atomically:YES];<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; [pool drain];<br />&nbsp; &nbsp; return 0;<br />}<br />


Or je ne vois pas du tout le fichier myfile.txt se faire sur le disque dur. Est-ce que j'ai loupé quelque chose ?

Réponses

  • devulderdevulder Membre
    22:32 modifié #2
    dans 1312356387:

    Bonjour,

    J'ai décidé de faire quelques test avec NSData et NSKeyedArchiver.

    Ce que doit faire ce petit programme, c'est déclarer un array avec deux string et un NSNumber en int, et de le sauver sur le disque dur dans un fichier : voici le code :

    <br /><br />#import &lt;Foundation/Foundation.h&gt;<br /><br />int main (int argc, const char * argv&#91;])<br />{<br /><br />&nbsp; &nbsp; NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];<br /><br />&nbsp; &nbsp; NSArray *array = [NSArray arrayWithObjects:@&quot;Bob&quot;, @&quot;Yoda&quot;,[NSNumber numberWithInt:52],nil];<br />&nbsp; &nbsp; NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; [data writeToFile:@&quot;/myfile.txt&quot; atomically:YES];<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; [pool drain];<br />&nbsp; &nbsp; return 0;<br />}<br />
    


    Or je ne vois pas du tout le fichier myfile.txt se faire sur le disque dur. Est-ce que j'ai loupé quelque chose ?


    Bonjour,

    Essaie sans le slash dans le nom de fichier

    <br />&nbsp; &nbsp; [data writeToFile:@&quot;myfile.txt&quot; atomically:YES];<br />
    
  • clampinclampin Membre
    22:32 modifié #3
    ça donne rien ... bizarre
  • devulderdevulder Membre
    22:32 modifié #4
    dans 1312374107:

    ça donne rien ... bizarre


    check la valeur de retour de la routine

    sinon tu px regarder le code d'erreur

    <br />NSError *error = nil;<br />BOOL success;<br /><br />success = [data writeToFile:@&quot;myfile.dat&quot; options:NSDataWritingAtomic error:&amp;error];<br /><br />if (!success)<br />[NSApp presentError:error];<br /><br />
    


  • laudemalaudema Membre
    août 2011 modifié #5
    Attention archivedData donne le data archivé, comme son nom l'indique. archiveRootObjectForFile archivera ton tableau (objet racine) dans le fichier mis en paramètre à  la méthode. NSKeyedArchiver Class Reference
    à  bien lire la question avant que d'y répondre  >:)
    Sinon, avec ton code et un fichier situé à  @/myFile.txt je retrouve bien le fichier à  la racine du disque dur mais si je ne mets pas le slash je ne retrouve rien (le Finder ne find rien nulle part).
    Tu devrais peut être essayer avec un chemin mieux défini.
Connectez-vous ou Inscrivez-vous pour répondre.