2014-02-26 133 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

相關問題