如何在cocoa应用程序中有效地从finder中检索所选文件的列表?

时间:2013-07-21 19:11:27

标签: objective-c cocoa selection osx-mountain-lion finder

在我的cocoa应用程序中,我正在尝试检索已在Finder窗口中选择的文件列表。我找到了以下方法来做到这一点,但它的速度令人难以忍受。

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

    NSArray * items = [selection arrayByApplyingSelector:@selector(URL)];
    NSMutableArray *filePaths =[[NSMutableArray alloc] init];
    for (NSString * item in items) {
        NSURL * url = [NSURL URLWithString:item];
        [filePaths addObject:[url path]];
    }

时间最明智的是,最贵的电话是

SBElementArray * selection = [[finder selection] get];

当对大量文件进行选择时,该方法会长时间挂起,当使用较小的选择时,它甚至都表现不佳。

是否有更好的方法可以在最前面的查找程序窗口中获取所有选定文件的网址?

我需要拥有文件网址,以便我可以对这些文件执行操作。

任何帮助将不胜感激!

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用Apple脚本

tell application "Finder"
    get selection
end tell  

osascript -e "tell application \"Finder\" to return selection"