我遇到了一个问题,但我找不到任何相关信息。
我有一些代码可以在 iOS 的 Documents 文件夹中写入文件。检查了 Apple 文档,似乎我想将文件放在此处,以便下次发布时可用。
这是我正在使用的代码:
- (void) writeToTextFileNSString *)logMessage inFileNSString *)fileName
{
//get the documents directory:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
//make a file name to write the data to using the documents directory:
NSString *filePath = [NSString stringWithFormat"%@/%@.txt", documentsDirectory, fileName];
NSLog(@"TEST path: %@", filePath);
//save logMessage to the documents directory
[logMessage writeToFile:filePath atomically:YES encoding:NSStringEncodingConversionAllowLossy error:nil];
}
现在我正在对这些方法进行单元测试。它在 iOS 7.0.3 模拟器上运行良好,但当我切换到 iOS 6.0 时,它不再运行了。
其实我发现“Application Support/iPhone Simulator/6.0/”里没有Documents文件夹,但是7.0.3文件夹里有一个。
我真的找不到在 6 和 7 之间应该如何处理写入文件的任何差异。我是否应该测试该文件夹是否存在,如果不存在则创建它?
Best Answer-推荐答案 strong>
这对我有用
NSString *string = @"Text to save";
NSString *filePath = @"filerecord.txt";
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex:0];
NSString *filePath = [docDir stringByAppendingPathComponent:filePath];
[string writeToFile:filePath atomically:YES];
更新
如果文档不存在则创建目录
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
if (![fileManager fileExistsAtPath:documentsDirectory]) {
[fileManager createDirectoryAtPath:documentsDirectory withIntermediateDirectories:NO attributes:nil error:&error];
}
NSString *string = @"Text to save";
NSString *filePath = @"filerecord.txt";
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:filePath];
[string writeToFile:filePath atomically:YES];
关于ios - writeToFile 在 iOS 7 上工作而不是在 iOS 6 上工作,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/22034780/
|