2015-02-09 36 views
-2

初學者在目標C在這裏,我有這樣的代碼:目標C - 如何將文件從一個位置移動到另一個位置?

//Path of management log file 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *urlPath= [documentsDirectory stringByAppendingPathComponent:@"Logs/log.txt"]; 

NSURL *source = [NSURL fileURLWithPath:urlPath]; 

//Destination 
NSURL * destination = [self.pathControl URL]; 

//Move file from source to that destination directory. 
[[NSFileManager defaultManager] copyItemAtURL:source toURL:destination error:nil]; 

的問題是,它沒有做任何事情。它可以編譯,但沒有任何反應。我使用copyItemAtURL方法錯了嗎?

+0

什麼pathControl的內容是什麼? – 2015-02-09 23:26:50

+0

盧克,使用強制錯誤參數!真的,提供錯誤參數並添加一個返回狀態變量,然後在狀態爲「NO」時記錄錯誤變量。 – zaph 2015-02-09 23:41:37

+0

@Zaph,不僅僅是一個命名約定,documentsDirectory只是一個變量名。它指向路徑/ User/admin/Library/Logs目錄。之後我將不得不更改名稱。 – deusmaximus 2015-02-09 23:41:37

回答

1

使用錯誤的指標理解錯誤:

NSError *error; 
BOOL status = [[NSFileManager defaultManager] copyItemAtURL:source toURL:destination error:&error]; 
if (status == NO) { 
    NSLog(@"errorL %@", error); 
} 
+0

應該是'if(!status)'而不是'if(status == NO)'。 – mipadi 2015-02-09 23:46:55

+0

@mipadi文檔:如果發生錯誤,則返回NO。 '!status'只是一個偏好,我喜歡'status == NO',因爲它很難錯過。 – zaph 2015-02-09 23:48:59

+2

如果「狀態」爲「否」,則if(!status)的計算結果爲真。 (你通常不會直接比較Objective-C中的YES和NO,部分是因爲文體/可讀性原因,部分原因是當比較布爾值與「YES」和「NO」時會發生邊緣情況。 ) – mipadi 2015-02-09 23:51:35

相關問題