当用户点击我的应用程序中的按钮时,我想让Finder走到前面并显示文件夹的内容。 NSWorkspace
课程有两个来电,activateFileViewerSelectingURLs(:)
和selectFile(:inFileViewerRootedAtPath:)
几乎可以满足我的要求,但他们都会选择一个或多个项目。我不希望Finder选择任何东西。
如果我输入
,我会看到我想要的行为/usr/bin/open /path/to/my/folder
终端中的是否有Cocoa API用于执行此操作,或者我是否需要NSTask
运行/usr/bin/open
?
答案 0 :(得分:10)
要求工作区将文件夹作为文件打开就足够了,因为Finder是文件夹的默认应用程序:
NSWorkspace.sharedWorkspace().openFile("/path/to/my/folder")
答案 1 :(得分:1)
如果您想确保Finder打开文件夹而不管默认的应用程序设置,您可以使用Applescript:
NSString *script = [NSString StringWithFormat:
@“tell application \”Finder\”\nopen folder (\“%@\” as POSIX file)\nend tell\n”, path];
NSAppleScript *openScript = [[NSAppleScript alloc] initWithSource: script];
[openScript executeAndReturnError:nil];
答案 2 :(得分:0)
AppleScript是我的解决方案,但我必须添加标签(\t
)才能正常工作:
NSString* path = ...;
NSString* script = [NSString stringWithFormat:@"tell application \"Finder\"\n\tactivate\n\tmake new Finder window to (POSIX file \"%@\")\nend tell\n", path];
NSAppleScript* openScript = [[NSAppleScript alloc] initWithSource:script];
[openScript executeAndReturnError:nil];
以便生成的脚本如下所示:
tell application "Finder"
activate
make new Finder window to (POSIX file "/Users/MyUser/someFolder")
end tell
答案 3 :(得分:0)
NSWorkspace.shared.open(URL(fileURLWithPath: "/your/path/goes/here"))
请注意,您必须具有要打开的路径的读取权限。