2011-04-11 59 views
0

我有一個的NSFileManager的問題,因爲我只能存儲一個文件到申請文件目錄,但我想創建一個文件到一個子目錄這我不認爲爲什麼,我不能」創造。我的代碼如下:的NSFileManager不創建文件

+(NSString *)applicationDocumentsDirectory { 
    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
} 

+(BOOL)storeFile:(NSData*)file withName:(NSString*)name atDirectory:(NSString*)dir{ 

    NSFileManager *filemgr; 
    NSString *docsDir; 
    NSString *newDir; 
    BOOL create=NO; 
    filemgr =[NSFileManager defaultManager]; 


    docsDir = [StorageManager applicationDocumentsDirectory]; 

    newDir = [docsDir stringByAppendingPathComponent:dir]; 

    if(![filemgr fileExistsAtPath:newDir]){ 
     if([filemgr createDirectoryAtPath:newDir withIntermediateDirectories:NO attributes:nil error:nil]){ 
      create=YES; 
     }  
    }else 
     create=YES; 

    if(create){ 
     if(![filemgr createFileAtPath:newDir contents:file attributes:nil]){ 
      [filemgr release]; 
      return YES; 
     } 
    } 

     [filemgr release]; 
    return NO; 
} 

回答

0

我不知道爲什麼文件沒有創建。乍一看,它看起來像你的代碼應該工作。但我可能會忽視某些事情。這也取決於你逝去的正是作爲參數傳遞給storeFile:withName:atDirectory:方法。

不過我張貼的答案,因爲我沒有發現在你的代碼另一個錯誤:你應該發送releasefilemgr因爲你還沒有送retain首先將它和你沒有創建對象。在這種情況下,沒有必要,發送到retain,要麼因爲你只使用它的本地方法中。您可能想查看Apple Developer Connection文檔「Cocoa Core Competencies: Memory Management」。

我不認爲這個錯誤解釋了爲什麼文件沒有建立;儘管我很驚訝你的應用程序不會因爲它而崩潰。

+0

如果我不創建文件夾,並嘗試創建相同的文件,但裏面的文檔文件夾它發生以及..我想我有權限設置爲newfolder ... – Jovem 2011-04-11 20:40:49

+0

您好,感謝幫助我只是覺得解決方案!!!問題是我並沒有附加到文件名... OMG這個問題就解決了...... – Jovem 2011-04-11 21:24:15

+0

哎呀,你是對的文件路徑!我錯過了那一個。 – Rinzwind 2011-04-12 05:40:00