Ответ 1
Objective-C версия:
NSArray *fileURLs = [NSArray arrayWithObjects:fileURL1, /* ... */ nil];
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:fileURLs];
Я пытаюсь программно запустить окно OSX Finder из проекта Xcode. Мне нужно открыть окно для конкретной папки и автоматически выбрать определенные файлы в этой папке.
Кто-нибудь знает, как это сделать в объектных параметрах командной строки c, applescript или Finder?
Спасибо!
Objective-C версия:
NSArray *fileURLs = [NSArray arrayWithObjects:fileURL1, /* ... */ nil];
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:fileURLs];
$ open -R <path-to-reveal>
Еще одна разновидность AppleScript - команда отображения Finder откроет окно для содержащей папки и выберет элемент (ы). Если имеется несколько содержащих папок, будут открыты несколько окон Finder.
tell application "Finder"
to reveal {someAlias, "path/to/POSIXfile" as POSIX file, etc}
Я нахожу, что activFileViewerSelectingURLs не работает над Yosemite (по крайней мере, когда он находится в отдельном пространстве от Finder). Это приведет к переключению на пространство Finder, но не отобразит URL. Использование:
(BOOL)selectFile:(NSString *)fullPath inFileViewerRootedAtPath:(NSString *)rootFullPath
будет переключать пробелы из полноэкранного приложения и выбирать путь.
Быстрая версия:
let paths = ["/Users/peter/foo/bar.json"]
let fileURLs = paths.map{ NSURL(fileURLWithPath: $0)}
NSWorkspace.sharedWorkspace().activateFileViewerSelectingURLs(fileURLs)
При открытии файла в path
:
NSString* path = @"/Users/user/Downloads/my file"
NSArray *fileURLs = [NSArray arrayWithObjects:[NSURL fileURLWithPath:path], nil];
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:fileURLs];
Swift 3.2/4.0 Версия:
NSWorkspace.shared.activateFileViewerSelecting([outputFileURL])