【发布时间】:2015-08-20 21:53:36
【问题描述】:
在我的应用程序中,我使用以下代码告诉 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 应该打开音乐文件,Preview 应该打开 PDF,Excel 应该打开 .xlsx 文件,当然除非用户另有说明。
文件驻留在某人驱动器上的哪个位置来确定使用哪个应用程序打开它并不重要。
【问题讨论】:
-
我的应用程序现在与 10.11 有同样的问题 我已向 Apple 提出技术请求。我不知道如何解决这个问题。
-
如果 Apple 为您提供了针对此问题的解决方案,请在此处回复。我知道,既然 El Capitan 出来了,我的客户很快就会开始问我这个问题。
标签: macos cocoa nsworkspace osx-elcapitan icloud-drive