comment exporter des données de base au format CSV

Je vais utiliser CHCSVParser pour exporter mes données de base au CHCSVParser CSV. Je sais comment get toute la valeur de l'entité, mais je ne sais pas comment écrire en CSV.

Quelqu'un peut-il m'apprendre à écrire en CSV avec CHCSVParser ?

 // Test listing all Infos from the store NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"NoteLog" inManagedObjectContext:context]; [fetchRequest setEntity:entity]; NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error]; for (NoteLog *noteInfo in fetchedObjects) { NSLog(@"Name: %@", noteInfo.city ); NSLog(@"Name: %@", noteInfo.country); NSLog(@"Name: %@", noteInfo.datetime); NSLog(@"Name: %@", noteInfo.notelatitude); NSLog(@"Name: %@", noteInfo.notelongtitude); NSLog(@"Name: %@", noteInfo.state); NSLog(@"Name: %@", noteInfo.text); } 

Un CHCSVWriter a plusieurs methods pour build des files CSV:

-writeField: accepte un object et écrit sa -description (après avoir été correctement échappée) dans le file CSV. Il écrira également le séparateur de champ (,) si nécessaire. Vous pouvez passer une string vide (@ "") ou nil pour écrire un champ vide.

-writeFields: accepte une list d'objects délimités par des virgules et nil-terminés et envoie chacun à -writeField :.

-writeLine est utilisé pour terminer la ligne CSV actuelle. Si vous n'appelez pas -writeLine, alors tous vos champs CSV seront sur une seule ligne.

-writeLineOfFields: accepte une list d'objects délimités par des virgules et nil-terminés, envoie chacun à -writeField:, puis appelle -writeLine.

-writeLineWithFields: accepte un tableau d'objects, envoie chacun à -writeField:, puis appelle -writeLine.

-writeCommentLine: accepte une string et l'écrit dans le file sous la forme d'un commentaire de style CSV.

En plus d'écrire dans un file, CHCSVWriter peut être initialisé pour écrire directement sur un NSSsortingng .

Quelque chose comme ça devrait marcher pour vous.

 CHCSVWriter *writer = [[CHCSVWriter alloc] initForWritingToSsortingng]; for (NoteLog *noteInfo in fetchedObjects) { [writer writeLineOfFields:noteInfo.city, noteInfo.country, noteInfo.datetime, noteInfo.notelatitude, noteInfo.notelongtitude, noteInfo.state, noteInfo.text, nil]; } NSLog(@"My CSV File: %@",writer.ssortingngValue); 

La réponse ci-dessus semble être obsolète, l'auteur a remplacé la méthode par une autre. Cela a fonctionné pour moi, j'espère que ça aide:

 NSOutputStream *stream = [[NSOutputStream alloc] initToMemory]; CHCSVWriter *writer = [[CHCSVWriter alloc] initWithOutputStream:stream encoding:NSUTF8SsortingngEncoding delimiter:',']; for (Type *instance in fetchedResults) { [writer writeLineOfFields:@[instance.propertyA, instance.B]]; } [writer closeStream]; NSData *buffer = [stream propertyForKey:NSStreamDataWrittenToMemoryStreamKey]; NSSsortingng *output = [[NSSsortingng alloc] initWithData:buffer encoding:NSUTF8SsortingngEncoding];