在我的应用中,我使用以下代码告诉Mac OS X在指定的URL处打开文件:
[[NSWorkspace sharedWorkspace] openURL:fileURL];
其中fileURL
是存储在我应用的iCloud Drive容器文件夹中的文件的网址。
在El Capitan中,似乎当文件放在应用程序的iCloud Drive容器中时,该文件的所有者将更改为拥有该iCloud Drive容器的应用程序。
在我的情况下,这意味着我的应用程序被要求打开存储在我应用程序的iCloud Drive容器中的文件的任何文件类型。如果您使用相同的文件并将其移至桌面,则会正确启动原始默认应用程序。
还有其他人看过El Capitan的这种新行为吗?
我已经为它提出了一个雷达:rdar://22213595
希望有人为此找到了解决方法。如果文件存储在iCloud Drive中,则对于使用NSWorkspace的openURL命令的任何应用程序都会出现问题。仅仅因为我链接到我的应用程序中的文件,并不意味着我的应用程序应该负责打开它。 iTunes应该打开音乐文件,预览应该打开PDF和Excel应该打开.xlsx文件,例如,除非用户当然没有指定。
在某人的驱动器上,文件所在的位置无关紧要,以确定使用哪个应用程序打开它。
答案 0 :(得分:2)
这是Apple的当前状态:
"我们的iCloud团队提到这是El Capitan的故意改变,但我仍在检查背面的逻辑以及是否有改变这种行为。一旦得到他们的答复,我会更新给你。"