在Finder中获取所选文件的路径

时间:2010-12-30 07:13:09

标签: objective-c cocoa macos

如何在Finder中检索所选文件的路径数组?

我一直在搜索,但只发现了有关AppleScript的链接。我也查看了NSWorkspaceNSFileManager,但我没有找到任何内容。

2 个答案:

答案 0 :(得分:15)

扩展@ Bavarious(正确)答案,以下是我如何使用脚本桥从Finder中选择:

#import "Finder.h" //my copy is here: https://github.com/davedelong/BetterInfo/blob/master/Finder.h

FinderApplication * finder = [SBApplication applicationWithBundleIdentifier:@"com.apple.finder"];
SBElementArray * selection = [[finder selection] get];

NSArray * items = [selection arrayByApplyingSelector:@selector(URL)];
for (NSString * item in items) {
    NSURL * url = [NSURL URLWithString:item];
    NSLog(@"selected item url: %@", url);
}

答案 1 :(得分:5)

如果可以使用AppleScript在给定的Finder窗口中获取所选文件的列表,则可以在Cocoa应用程序中使用Scripting Bridge与Finder进行交互。引用Apple的文档,

  

Scripting Bridge是一种框架和技术,使Cocoa开发人员可以更轻松地控制和编写可编写脚本的应用程序。您可以简单地将Objective-C消息发送到代表具有脚本界面的应用程序的对象,而不是将AppleScript脚本合并到应用程序中或处理发送和处理Apple事件的复杂性。您的Cocoa应用程序可以执行AppleScript脚本可以执行的任何操作,但它使用与项目代码的其余部分集成的Objective-C代码。

没有Cocoa类代表Finder,更具体地说,是Finder窗口。 Finder是一个应用程序,也是一个可编写脚本的应用程序,所以Scripting Bridge是最佳选择。