2010-06-21 6 views
2

Je dois écrire (au début de l'application) et supprimer le contenu (à la fin de l'application) un csv dans mon fichier bac à sable avec un flux de données. Pour votre expérience, quelle est la meilleure façon de faire cela?iphone, écrire le fichier csv dans le bac à sable

modifier:

je suis en train avec ceci:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSString *filename [email protected]"test.csv"; 
NSString *fullPathToFile = [documentsDirectory stringByAppendingPathComponent:filename]; 
if(![[NSFileManager defaultManager] fileExistsAtPath: fullPathToFile]) { 
      [[NSFileManager defaultManager] createFileAtPath: fullPathToFile contents:nil attributes:nil]; 
} 
NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath: fullPathToFile]; 
NSString *data = [NSString stringWithFormat:@"%@,%@\n", latitudine.text, longitudine.text]; 
[handle writeData:[data dataUsingEncoding:NSUTF8StringEncoding]]; 

fonctionner, mais .... chaque writedata temps est d'appeler je suis arrivé qu'une seule ligne, pas append. je veux rassembler toutes les valeurs de mes deux textlabel.

Où est mon erreur?

Edit2:

yessss, trouver la solution avec ce code:

première fois que je créer celui-ci:

- (NSString *)dataFilePath { 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    return [documentsDirectory stringByAppendingPathComponent:@"myfile.csv"]; 

}

et dans mon viewDidLoad je vérifie et si n'existe pas, créer mon fichier

if (![[NSFileManager defaultManager] fileExistsAtPath:[self dataFilePath]]) { 
    [[NSFileManager defaultManager] createFileAtPath: [self dataFilePath] contents:nil attributes:nil]; 
    NSLog(@"Route creato"); 

} 

et dans l'une de ma méthode j'ajouter le code pour récupérer des données et ajouter à mon dossier:

NSString *data = [NSString stringWithFormat:@"%@,%@ ", latitudine.text, longitudine.text]; 
//create my data to append 
NSFileHandle *handle; 
handle = [NSFileHandle fileHandleForWritingAtPath: [self dataFilePath] ]; 
//say to handle where's the file fo write 
[handle truncateFileAtOffset:[handle seekToEndOfFile]]; 
//position handle cursor to the end of file 
[handle writeData:[data dataUsingEncoding:NSUTF8StringEncoding]]; 
//write data to with the right encoding 

Hope this helps!

Répondre

1

Si vous le placez dans NSTemporaryDirectory(), je pense qu'il est supposé être nettoyé à la sortie de l'application - cela vaut probablement la peine de vérifier si c'est le cas.

+0

Vous devez toujours les supprimer vous-même: "Votre application doit supprimer les fichiers de ce répertoire lorsqu'elle détermine qu'ils ne sont plus nécessaires." de la [docs] (http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/FilesandNetworking/FilesandNetworking.html#//apple_ref/doc/uid/TP40007072-CH21-SW12) – progrmr

+0

ok C'est à tous. La meilleure façon de travailler avec csv est nsfilehandle? Je suis maintenant en train de vérifier ce document. – zebra

Questions connexes