0

我正在使用一种非常简单的方法将文件名存储在文本文件中。出于某种原因,当我启动 writeToFile 时,我遇到了崩溃:

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];

它读取文件,将其内容放入名为 currentContents 的变量中,然后将新字符串添加到文件中,然后重新写入。这里出了什么问题。

如果没有 writeToFile 行,它可以工作,使用它,我会崩溃。

saveFilePath 的由来

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

saveFilePath 的 NSLog 显示了正确的路径

4

2 回答 2

1

我认为您的问题实际上可能是'\0'NSData 对象末尾缺少空字符 ( )。所以你最终得到了混乱的数据。无论如何,您可能想立即-writeToFile:atomically:encoding:error:在新字符串上使用。

于 2011-06-17T12:30:59.567 回答
0

事实证明,文件没有写入的原因是因为一个未分配的变量:

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

本来应该:

NSString *currentContents = [[NSString alloc] initWithContentsOfFile:saveFilePath encoding:NSUTF8StringEncoding error:nil];
于 2011-06-27T12:27:07.737 回答