Cómo exportar datos básicos a CSV

Me gustaría usar CHCSVParser para exportar mis datos de Core a CSV. Sé cómo get todo el valor de la entidad, pero no sé cómo escribir en CSV.

¿Alguien me puede enseñar cómo escribir a CSV con 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 tiene varios methods para build files CSV:

-writeField: acepta un object y escribe su -descripción (después de haberse escapado correctamente) hacia el file CSV. También escribirá un separador de campo (,) si es necesario. Puede pasar una cadena vacía (@ "") o nula para escribir un campo vacío.

-writeFields: acepta una list de objects delimitada y no terminada por comas y envía cada uno a -writeField :.

-writeLine se usa para terminar la línea CSV actual. Si no invoca -writeLine, todos sus campos CSV estarán en una sola línea.

-writeLineOfFields: acepta una list de objects delimitada por comas y nula, envía cada uno a -writeField: y luego invoca -writeLine.

-writeLineWithFields: acepta una matriz de objects, envía cada uno a -writeField: y luego invoca -writeLine.

-writeCommentLine: acepta una cadena y la escribe en el file como un comentario de estilo CSV.

Además de escribir en un file, CHCSVWriter se puede inicializar para escribir directamente en un NSString .

Algo así debería funcionar para ti.

 CHCSVWriter *writer = [[CHCSVWriter alloc] initForWritingToString]; 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.stringValue); 

La respuesta anterior parece estar en desuso, el autor reemplazó el método con otro que parece. Esto funcionó para mí, espero que sea de ayuda:

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