在我的应用程序中,我使用以下代码告诉 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 文件,当然除非用户另有说明。
文件位于某人驱动器上的哪个位置以确定使用哪个应用程序打开它并不重要。