Получить путь к выбранному файлу в Finder - PullRequest
4 голосов
/ 30 декабря 2010

Как мне получить массив путей к выбранным файлам в Finder?

Я искал вокруг, но нашел только ссылки, касающиеся AppleScript. Я также посмотрел на NSWorkspace и NSFileManager, но ничего не нашел.

Ответы [ 2 ]

15 голосов
/ 30 декабря 2010

Расширяя ответ @ 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);
}
5 голосов
/ 30 декабря 2010

Если можно получить список выбранных файлов в заданном окне Finder с помощью AppleScript, вы, вероятно, можете использовать Scripting Bridge в приложении Какао для взаимодействия с Finder. Цитируя документацию Apple,

Scripting Bridge - это фреймворк и технология, которые значительно упрощают разработчикам Cocoa контроль и взаимодействие со скриптовыми приложениями. Вместо того, чтобы включать скрипты AppleScript в ваше приложение или иметь дело со сложностями отправки и обработки событий Apple, вы можете просто отправить сообщения Objective C объекту, который представляет приложение с интерфейсом сценариев. Ваше приложение Какао может делать все, что может сценарий AppleScript, но делает это в коде Objective-C, который интегрирован с остальной частью кода вашего проекта.

Нет класса Какао, который представляет Finder или, более конкретно, окна Finder. Finder - это приложение, и приложение для сценариев, поэтому Scripting Bridge - это путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...