2012-05-24 68 views
1

我正在嘗試使用用戶界面製作一個非常簡單的rsync程序。我所需要的只是拖放兩個文件路徑的功能,以便將一個文件複製到另一個文件路徑。現在,我只是想將我桌面上的一個文件複製到桌面上的一個文件夾中,而這甚至不能工作。我使用標題爲「源」和「目的地」的文本字段來刪除我拖入它們的文件路徑。我有以下代碼:cocoa中的copyItemAtURL

#import "AppController.h" 

@implementation AppController 

@synthesize source = _source, destination = _destination; 

-(IBAction)sync:(id)sender 
{ 
NSFileManager *manager = [[NSFileManager alloc] init]; 
    //NSURL *source = [NSURL fileURLWithPath:@"/Users/crashprophet/Desktop/Time Out Tot Schedule.doc"]; 
    // NSURL *destination = [NSURL fileURLWithPath:@"/Users/crashprophet/Desktop/untitled f  older 2"]; 
NSURL *source = [NSURL URLWithString:self.source.stringValue]; 
NSURL *destination = [NSURL URLWithString:self.destination.stringValue]; 


[manager copyItemAtURL:source toURL:destination error:nil]; 
NSLog(@"The source path is %@ and the destation path is %@",source, destination); 
NSLog(@"Got here!"); 
} 

@end 

任何想法?

+0

NSLog記錄你的'self.source.stringValue'和'self.destination.stringValue'以確保它們是正確的。另外,創建一個錯誤對象並將其放入'copyItemAtURL:toURL:error:',然後檢查它返回的內容。 – tux91

+0

然後決定是否需要'fileURLWithPath:'(如在您的註釋代碼中)或'URLWithString:'(如在您的真實代碼中)。如果文本字段包含路徑,則需要'fileURLWithPath:'。 –

回答

4

你需要使用fileURLWithPath:如果你的字符串看起來像你的評論。另外,目標路徑不能只是一個文件夾,它最後需要一個文件名 - 您可以使用與原始文件名相同的文件名,或者可以給它一個新的文件名。從您使用的複製方法的文檔:

「dstURL 放置srcURL副本的URL。此參數中的URL不能是文件引用URL,並且必須包含文件的名稱在新的位置,這個參數不能爲零。「

+0

非常感謝你! – crashprophet