Search code examples
iosobjective-ccsvnsdocumentdirectory

Saving CSV file to documents directory folder


I am writing a registration app that is supposed to save a CSV file in the documents directory folder. I would like to look at the output and see what happens when I open the CSV file in excel. I navigated to the documents directory folder by finding out where it should be saved using this code snippet:

NSLog(@"Info Saved");
NSLog(@"Documents Directory: %@", [[[NSFileManager defaultManager]
                                    URLsForDirectory:NSDocumentDirectory
                                    inDomains:NSUserDomainMask] lastObject]);

Here is my code for saving the information put into the 11 text fields in the registration form:

- (IBAction)saveFormButton:(id)sender {

// saves text field data in comma separated CSV file format
NSString *formData = [NSString stringWithFormat:@"%@,%@,%@,%@,%@,%@,%@,%@,%@,%@,%@\n",
                      self.nameTextfield.text, self.emailTextfield.text,
                      self.phoneTextfield.text, self.termTextfield.text,
                      self.schoolTextfield.text, self.graduationTextfield.text,
                      self.gpaTextfield.text, self.degreeTextfield.text,
                      self.interestTextfield.text, self.groupTextfield.text,
                      self.appliedTextfield.text];

// get document directory path
NSString *documentDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                    NSUserDomainMask, YES)objectAtIndex:0];

// append results.csv onto doc path
NSString *event = [documentDirectoryPath stringByAppendingString:@"results.csv"];

// creates folder if it does not exist
if (![[NSFileManager defaultManager] fileExistsAtPath:documentDirectoryPath]) {
    [[NSFileManager defaultManager] createFileAtPath:event contents:nil attributes:nil];
}


NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:event];
[fileHandle seekToEndOfFile];
[fileHandle writeData:[formData dataUsingEncoding:NSUTF8StringEncoding]];
[fileHandle closeFile];

Should I be seeing a file in that specific folder I have navigated to?

Thank you for your help,


Solution

  • Here is a more elegant way with less code

     // Content of file
     NSString* str= @"str,hey,so,good";
    
     // Writing    
     NSString *root = [NSHomeDirectory() stringByAppendingPathComponent:@"file.csv"];
     [str writeToFile:root atomically:YES encoding:NSUTF8StringEncoding error:NULL];
    
     // Reading
     NSString *string = [[NSString alloc] initWithContentsOfFile:root encoding:NSUTF8StringEncoding error:nil];
    
     NSLog(@"%@",string);
    

    The result:

    2015-07-15 15:52:56.267 ObjC[2927:15828] str,hey,so,good