Search code examples
objective-cwritetofile

Crash on writeToFile


I'm using quite a simple method of storing file names in a text file. For some reason when I initiate the writeToFile I get a crash:

pathString = [NSString stringWithFormat:@"New FileName - %@.png", identifier];  
NSString *currentContents = [NSString stringWithContentsOfFile:saveFilePath encoding:NSUTF8StringEncoding error:nil];
NSString *newContents = [NSString stringWithFormat:@"%@:::%@",currentContents, pathString];
NSData *newData = [newContents dataUsingEncoding:NSUTF8StringEncoding];
[newData writeToFile:saveFilePath options:NSDataWritingAtomic error:nil];

It reads the file, places it's contents into a variable called currentContents, then adds the new string to the file, and re-writes it. What's going wrong here.

Without the writeToFile line it works, with it, I get a crash.

Origin of saveFilePath

NSString *saveDocument = [NSString stringWithFormat:@"SavedFile.txt"];
NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
saveFilePath = [docsDirectory stringByAppendingPathComponent:saveDocument];

An NSLog of saveFilePath reveals a correct path


Solution

  • It turns out that the reason the file wasn't writing was because of an unallocated variable:

    NSString *currentContents = [NSString stringWithContentsOfFile:saveFilePath encoding:NSUTF8StringEncoding error:nil];
    

    should have been:

    NSString *currentContents = [[NSString alloc] initWithContentsOfFile:saveFilePath encoding:NSUTF8StringEncoding error:nil];