在cocoa应用程序中获取已删除文件的路径

时间:2012-08-09 19:40:47

标签: xcode macos cocoa file

我想知道如何检索用户拖放到cocoa应用程序中的文件路径。例如:用户从他/她的桌面拖动名为test的文件。然后cocoa应用程序会说:Users / currentusername / Desktop / test

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

我刚刚下载了Apple's "CocoaDragAndDrop" sample code并试用了它。

当我将Finder中的PNG文件拖入正在运行的应用程序时,窗口标题将更改为拖入的图像的路径。

查看示例代码,我可以看到粘贴板中包含文件URL:

 //if the drag comes from a file, set the window title to the filename
 fileURL=[NSURL URLFromPasteboard: [sender draggingPasteboard]];
 [[self window] setTitle: fileURL!=NULL ? [fileURL absoluteString] : @"(no name)"];

在您自己的代码中尝试使用此技术并根据需要对其进行修改。

答案 1 :(得分:1)

接受的答案不再适用于Xcode 6。 我发现这个方法得到了相同的结果:

    NSURL*fileURL = [NSURL URLFromPasteboard: [sender draggingPasteboard]];
    NSString *filePath = [fileURL path];
    [[self window] setTitle:filePath];

答案 2 :(得分:1)

目前正致力于开发类似的界面,我知道OP已经要求路径,而不是URL检索。对于已接受的答案,建议的OS X 10.10(XCode6)解决方案似乎存在拒绝在窗口之间拖放内容的问题。

但是,避免声明NSString * filePath,而只是在建议的示例代码的DragDropImageView.m的第175行中使用[fileURL path]方法替换[fileURL absoluteString]方法,似乎可以解决它:

    fileURL=[NSURL URLFromPasteboard: [sender draggingPasteboard]];
    [[self window] setTitle: fileURL!=NULL ? [fileURL path] : @"(no name)"];

它在Xcode4中通过Xcode6,SDK 10.8-10.10,AFAICT进行编译和运行。

希望这可以提供帮助。