2014-02-26 92 views
2

我一直有一个问题,我找不到任何关于它的东西。writeToFile在iOS 7上不在iOS 6上

我有一些代码可以在iOS文档文件夹中编写文件。检查苹果文件似乎是我想把它的文件放在下一次启动。

下面是我使用的代码:现在,我使用这个方法的单元测试

- (void) writeToTextFile:(NSString *)logMessage inFile:(NSString *)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时,它不再工作。

其实我发现,有中没有文件夹“应用程序支持/ iPhone模拟器/ 6.0 /”,但有一个在7.0.3的文件夹。

我实在无法找到如何写入一个文件应在6和7。我应该测试,如果该文件夹存在则创建它,如果它不存在之间处理什么不同吗?

+0

你'filePath'无效。要创建文件路径,请使用'stringByAppendingPathComponent'方法。比如'NSString * filePath = [documentsDirectory stringByAppendingPathComponent:fileName];' –

+2

在问这里之前,您应该添加一个错误变量并在iOS 6中读取它,然后告诉我们它说了什么。假设它不只是直接告诉你发生了什么问题。 –

+0

它告诉我目录未找到 – SeikoTheWiz

回答

1

这对我的作品

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

UPDATE

创建文档目录,如果不存在

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

这给了我相同的“没有这样的文件或目录错误”在iOS 6 – SeikoTheWiz

+1

尝试检查您的错误 'NSError * error = nil; BOOL成功= [字符串writeToFile:filePath选项:NSDataWritingAtomic错误:错误]; 的NSLog(@ “是成功=%d,误差=%@”,成功,错误);' –

+0

2014年2月26日09:27:50.773 xctest [93261:303]是成功= 0,误差=错误域= NSCocoaErrorDomain Code = 4“操作无法完成(Cocoa error 4)”UserInfo = 0x8a20080 {NSUnderlyingError = 0x8a22110“操作无法完成,没有这样的文件或目录”,NSFilePath =/Users/SeikoTheWiz /库/应用程序支持/ iPhone模拟器/ 6.0 /文档/ filerecord.txt,NSUserStringVariant =文件夹} – SeikoTheWiz

相关问题