desde - exportar contactos iphone a pc
cómo exportar datos básicos a CSV (2)
Un CHCSVWriter
tiene varios métodos para construir archivos CSV:
-writeField:
acepta un objeto y escribe su -descripción (después de haberse escapado correctamente) en el archivo CSV. También escribirá separador de campo (,) si es necesario. Puede pasar una cadena vacía (@ "") o nulo para escribir un campo vacío.
-writeFields:
acepta una lista de objetos delimitada por comas y nula y envía cada uno a -writeField :.
-writeLine
se utiliza para finalizar la línea CSV actual. Si no invoca -writeLine, todos sus campos CSV estarán en una sola línea.
-writeLineOfFields:
acepta una lista de objetos delimitada por comas y nula, envía cada uno a -writeField :, y luego invoca -writeLine.
-writeLineWithFields:
acepta una matriz de objetos, envía cada uno a -writeField :, y luego invoca -writeLine.
-writeCommentLine:
acepta una cadena y la escribe en el archivo como un comentario de estilo CSV.
Además de escribir en un archivo, 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);
Me gustaría usar CHCSVParser
para exportar mis datos Core a CSV. Sé cómo obtener todo el valor de la entidad, pero no sé cómo escribir en CSV.
¿Alguien puede enseñarme cómo escribir en 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);
}
La respuesta anterior parece estar en desuso, el autor reemplazó el método con otro que parece. Esto funcionó para mí, espero que ayude:
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];