可可中的copyItemAtURL

Posted

技术标签:

【中文标题】可可中的copyItemAtURL【英文标题】:copyItemAtURL in Cocoa 【发布时间】:2012-05-24 03:09:50 【问题描述】:

我正在尝试制作一个非常简单的带有用户界面的 rsync 程序。我所需要的只是能够拖放两个文件路径,以便将一个复制到另一个。现在我只是想把我桌面上的一个文件复制到桌面上的一个文件夹中,这甚至行不通。我正在使用标题为“源”和“目标”的文本字段来删除我拖入其中的文件路径。我有以下代码:

#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

有什么想法吗?

【问题讨论】:

NSLog 你的self.source.stringValueself.destination.stringValue 以确保它们是正确的。另外,创建一个错误对象并将其放入copyItemAtURL:toURL:error:,然后检查它返回的内容。 然后决定你是想要fileURLWithPath:(在你的注释掉的代码中)还是URLWithString:(在你的真实代码中)。如果文本字段包含路径,则需要fileURLWithPath: 【参考方案1】:

如果您的字符串看起来像您的 cmets 中的字符串,您需要使用 fileURLWithPath:。此外,目标路径不能只是一个文件夹,它的末尾需要一个文件名——您可以使用与原始文件名相同的文件名,也可以给它一个新的文件名。从您使用的复制方法的文档中:

"dstURL 放置 srcURL 副本的 URL。此参数中的 URL 不能是文件引用 URL,并且必须在新位置包含文件名。此参数不能为 nil。”

【讨论】:

以上是关于可可中的copyItemAtURL的主要内容,如果未能解决你的问题,请参考以下文章

出现错误 - (BOOL)copyItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL 错误:(NSError **)error

可可绑定核心数据中的延迟获取是啥?

可可中的时间正则表达式

由于可可豆荚中的内部保护错误快速类功能而无法访问

无法更改可可项目中的应用名称?

无法使用可可豆荚归档 xcode 中的构建