在我的应用程序中,我使用以下代码告诉Mac OS X以指定的URL打开文件:

[[NSWorkspace sharedWorkspace] openURL:fileURL];

其中fileURL是存储在我的应用程序的iCloud Drive容器文件夹中的文件的URL。

在El Capitan中,似乎将文件放置在应用程序的iCloud Drive容器中时,该文件的所有者将变为拥有该iCloud Drive容器的应用程序。

在我的情况下,这意味着要求我自己的应用程序打开存储在我的应用程序的iCloud Drive容器中的文件的任何文件类型。如果您使用相同的文件并将其移至桌面,则原始默认应用程序将正确启动。

还有其他人看到过El Capitan的这种新行为吗?

我已经为此提交了雷达:rdar://22213595

希望有人找到了解决方法。如果该文件存储在iCloud Drive中,则对于使用NSWorkspace的openURL命令的任何应用程序都会出现问题。仅仅因为我链接到我的应用程序中的文件,并不意味着我的应用程序应负责打开它。例如,除非用户另行指定,否则iTunes应该打开音乐文件,预览应该打开PDF,Excel应该打开.xlsx文件。

文件位于某人的驱动器上的哪个位置无关紧要,以决定使用哪个应用程序打开文件。

最佳答案

这是Apple的当前状态:

“我们的iCloud团队提到,这是El Capitan的有意改变,但我仍在与他们核对背后的逻辑,以及是否有任何改变这种行为的方式。一旦得到他们的回应,我会及时通知您。”

关于macos - NSWorkspace openURL无法使用默认应用程序打开文件类型存储在iCloud Drive中的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32129024/

10-10 19:38