I am exporting the core data into csv via mail composer using CHCSVParser(by Dave DeLong) but the issue is that it is taking the core data table name instead of row values.
Also, i want them in a particular order.e.g.like "Sewer No", "Manhole 1", "Manhole 2"
Here is the coding i am using:
//fetching the data from the core data
NSManagedObjectContext *moc = [self managedObjectContext];
NSEntityDescription *entityDescription = [NSEntityDescription
entityForName:@"Input_Details" inManagedObjectContext:moc];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.predicate = [NSPredicate predicateWithFormat:@"rs_Input_project.name = %@", self.projectObject.name];
[request setEntity:entityDescription];
request.resultType = NSDictionaryResultType;
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"sewer_No" ascending:YES];
[request setSortDescriptors:@[sortDescriptor]];
NSError *error;
NSArray *fetchedObjects = [moc executeFetchRequest:request error:&error];
//creating a csv CHCSVWriter
NSOutputStream *output = [NSOutputStream outputStreamToMemory];
CHCSVWriter *writer = [[CHCSVWriter alloc] initWithOutputStream:output encoding:NSUTF8StringEncoding delimiter:','];
for (id object in fetchedObjects)
{
if ([object conformsToProtocol:@protocol(NSFastEnumeration)])
{
[writer writeLineOfFields:object];
}
}
[writer closeStream];
NSData *buffer = [output propertyForKey:NSStreamDataWrittenToMemoryStreamKey];
NSString *string = [[NSString alloc] initWithData:buffer encoding:NSUTF8StringEncoding];
NSLog(@"Length of Buffer:%d Error:%@",[buffer length],[error localizedDescription]);
if ( [MFMailComposeViewController canSendMail] )
{
MFMailComposeViewController *mailComposer = [[MFMailComposeViewController alloc] init];
mailComposer.mailComposeDelegate = self;
NSData *myData = [string dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"myData csv:%@",myData);
NSLog(@"string csv:%@",string);
// Fill out the email body text
NSString *emailBody = @"Sewer_Output";
[mailComposer setMessageBody:emailBody isHTML:NO];
//attaching the data and naming it Sewer_Output
[mailComposer addAttachmentData:myData mimeType:@"text/cvs" fileName:@"Sewer_Output.csv"];
[self presentModalViewController:mailComposer animated:YES];
}