Ale*_*lec 5 macos xcode cocoa swift findersync
当用户单击我正在编写的 Finder 同步扩展中的菜单项时,我尝试打开特定文件夹。我知道有很多类似的问题,因为我已经看过它们,但没有一个解决方案在我的应用程序中起作用。
\n\n这是我试图打开的文件夹:
\n\nlet folder = "/Users/username/some/folder"\nRun Code Online (Sandbox Code Playgroud)\n\n这篇文章,使用 Swift 在查找器中显示文件夹的内容建议执行以下操作:
\n\nNSWorkspace.shared().selectFile(nil, inFileViewerRootedAtPath: folder)\nRun Code Online (Sandbox Code Playgroud)\n\n当我厌倦了这种方法时,单击菜单项时不会执行任何操作。
\n\n我看过很多其他帖子,也尝试过以下方法,但还没有任何效果。
\n\nNSWorkspace.shared().activateFileViewerSelecting([URL(fileURLWithPath: safeZone, isDirectory: true)])\nRun Code Online (Sandbox Code Playgroud)\n\n这会导致包含文件夹“some”被打开,而我实际想要打开的文件夹“folder”只是突出显示。
\n\nNSWorkspace.shared().openFile(safeZone)\nRun Code Online (Sandbox Code Playgroud)\n\n当我厌倦了这种方法时,单击菜单项时不会执行任何操作。
\n\nNSWorkspace.shared().open(URL(fileURLWithPath: safeZone, isDirectory: true))\nRun Code Online (Sandbox Code Playgroud)\n\n当我尝试此方法时,我从 Finder 收到一条消息,说明:
\n\nThe application \xe2\x80\x9cMyAppFileSyncExtension\xe2\x80\x9d does not have permission to open \xe2\x80\x9cfolder.\xe2\x80\x9d\nRun Code Online (Sandbox Code Playgroud)\n\n有没有办法通过 Xcode 赋予扩展更多权限?我知道我的父应用程序可以毫无问题地读取和写入该文件夹。
\n\nNSWorkspace.shared().openFile(folder, withApplication: "Finder")\nRun Code Online (Sandbox Code Playgroud)\n\n当我厌倦了这种方法时,单击菜单项时不会执行任何操作。
\n\n我猜测这些方法都不起作用,因为我正在尝试从 Finder Sync Extension 执行此操作。有谁知道如何解决这个问题?
\n\n更新
\n\n我测试了父应用程序中的这些方法,其中大多数都有效。问题是如何从 Finder Sync Extension 创建这种类型的行为。任何帮助将不胜感激。
\n