将应用程序的内容复制到桌面编程式

问题描述:

我是Objective-C的新手。将应用程序的内容复制到桌面编程式

如何将我的整个.app包([[NSBundle mainBundle] bundleURL])以编程方式复制到我的桌面?

这是我的代码,但没有帮助我。

NSString *sourcepath = [[NSBundle mainBundle] bundlePath]; 
NSString *destpath = [NSHomeDirectory() stringByAppendingPathComponent:@"Desktop"]; 
[[NSFileManager defaultManager] copyItemAtPath:sourcepath toPath:destpath error:nil]; 
+0

确实有意义在用户的硬盘上创建应用程序的克隆?你究竟在努力实现什么?某些* Windows *类似于桌面上的别名? – Jay 2013-04-11 09:04:02

+0

其实我只是想知道如何在目标c中以编程方式复制。我试图使用[[NSFileManager的defaultManager],但它不帮助我可能是我可能是错的地方。 – fazal 2013-04-11 09:12:24

+0

您是否添加了错误处理和'NSLog()' - 是否返回了一个'NSError'? – Jay 2013-04-11 12:09:44

您可以使用标准的NSFileManager方法

复制目录以及文件。从Apple的文档:

复制项目时,当前进程必须有权读取srcPath中的文件或目录并写入dstPath的父目录。如果srcPath中的项目是一个目录,则此方法将复制该目录及其所有内容,包括任何隐藏文件。

如果已经存在或者复制将失败(再次按照Apple文档),则必须手动删除目标中具有相同名称的项目(文件/目录)。

+0

好吧,我用代码编辑我的问题。 – fazal 2013-04-11 10:01:36

+0

你能否请你重新访问我的问题,我已经通过插入我的代码进行了编辑。 – fazal 2013-04-11 11:01:54

以下是我解决这个问题的方法,可能会对某人有所帮助。

- (IBAction)createShortcut:(id)sender { 

NSString *sourcepath = [[NSBundle mainBundle] bundlePath]; 
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES); 
NSString *theDesktopPath = [paths objectAtIndex:0]; 
NSString *saveFilePath = [theDesktopPath stringByAppendingPathComponent:@"myApp.app"]; 
[[NSFileManager defaultManager] copyItemAtPath:sourcepath toPath:saveFilePath error:nil]; 

} 
+0

总是检查和处理文件操作的潜在错误是非常有价值的,也就是说,我会检查copyItemAtPath:call是否返回“YES”,并提供对错误细节的方法调用的“NSError”引用。 – Jay 2013-04-16 17:07:41