OStack程序员社区-中国程序员成长平台

标题: ios - writeToFile 在 iOS 7 上工作而不是在 iOS 6 上工作 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 19:30
标题: ios - writeToFile 在 iOS 7 上工作而不是在 iOS 6 上工作

我遇到了一个问题,但我找不到任何相关信息。

我有一些代码可以在 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-推荐答案


这对我有用

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/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4