2012-10-03 165 views
0

我想通過使用NSFileManager在MyApp.app/Document文件夾中創建一個文件夾。 (MyApp是我的自定義應用程序。)如何將項目文件複製到應用程序的文檔文件夾?

因此,我將IMG_0525.jpg(用於測試)複製到項目的文件夾中。

然後嘗試將其從項目文件夾複製到MyApp.app/Document文件夾中。

但我不知道如何指定路徑名稱。 (源和目的地路徑)

你能告訴我怎麼做嗎?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    [self generateTableContents]; 

} 


- (void)generateTableContents { 

    NSFileManager * fileManager = [NSFileManager defaultManager]; 
    NSArray *appsDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentPath = [appsDirectory objectAtIndex:0]; 
    NSLog(@"documentPath : %@", documentPath); 

    [fileManager changeCurrentDirectoryPath:documentPath]; 
    [fileManager createDirectoryAtPath:@"user_List1" withIntermediateDirectories:YES attributes:nil error:nil]; 

    // I'm trying to copy IMG_0525.jpg to MyApp.app/Document/user_List1 folder. 
    [fileManager copyItemAtPath:<#(NSString *)srcPath#> toPath:<#(NSString *)dstPath#> error:<#(NSError * *)error#>]; 


} 

enter image description here

回答

1
  • 您的使用得到這個NSSearchPathForDirectoriesInDomains文檔目錄的代碼是正確的,但請注意,這不會點進去 「MyApp.app/Documents」。實際上,你不能在運行時修改應用程序的捆綁內容(如果你修改它,它會違反捆綁包的代碼簽名),但你可以複製應用程序的沙箱中的文件(這是在「MyApp.app 「束),這就是路徑此應用程序沙箱的文件夾,你對NSSearchPathForDirectoriesInDomains調用將返回

  • 話雖這麼說,你那麼現在有一個文件的目標文件夾,所以這是-copyItemAtPath:toPath:error:方法的toPath:參數。唯一缺少的部分是指向您的包中的資源的源路徑(指向在您的Xcode項目中編譯的包中添加的圖像文件)。

爲了獲得該源路徑,使用-[NSBundle pathForResource:ofType:]方法。這是非常簡單易用:

​​
  • 最後error:參數可以是NULL,或者一個指向NSError*對象,如果您想要檢索的情況下,-copyItemAtPath:toPath:error:方法失敗的錯誤。對於該參數,只需在調用之前創建一個NSError* error;變量,並將&error傳遞給-copyItemAtPath:toPath:error:的第三個參數。

因此,完整的呼叫看起來就像這樣:

NSError* error; // to hold the error details if things go wrong 
NSString* sourcePath = [[NSBundle mainBundle] pathForResource:@"IMG_0525" ofType:"jpg"]; 

BOOL ok = [fileManager copyItemAtPath:sourcePath toPath: documentPath error:&error]; 
if (ok) { 
    NSLog(@"Copy complete!"); 
} else { 
    NSLog(@"Error while trying to copy image to the application's sandbox: %@", error); 
} 
+0

哦!天哪。多麼美好的解釋! :D –

+0

謝謝你的幫助。 –

相關問題