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

Jos*_*hua 4 macos cocoa objective-c

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

我一直在搜索,但只发现了AppleScript的链接.我也看了看NSWorkspaceNSFileManager,但我没有发现任何东西.

Dav*_*ong 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);
}
Run Code Online (Sandbox Code Playgroud)

  • 对于那些不熟悉cocoa/osx编程的人,比如我自己,请务必链接到ScriptingBridge.framework并节省时间:) (3认同)

小智 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是最佳选择.