如何在Finder中检索所选文件的路径数组?
我一直在搜索,但只发现了有关AppleScript的链接。我也查看了NSWorkspace
和NSFileManager
,但我没有找到任何内容。
答案 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是最佳选择。