【发布时间】:2016-01-06 17:16:18
【问题描述】:
我有一个 OS X/iOS 应用程序,它使用旧式通用容器 ID TEAMID.com.companyname.product,并在 OS X 上使用 NSDocument 和在 iOS 上使用 UIDocument 构建.
使用内置NSDocumentController openDocument: 面板在 OS X 10.8、10.9 和 10.10 上可以正常打开文件。在 10.10 中,Apple 扩展了该面板以允许 iCloud Drive 访问。在面板顶部,标题为“iCloud Library”的选择器显示“Appname - iCloud”和“iCloud Drive”作为选项。
选择前者可访问 App ubiquity 容器中的文档,后者显示可用的 iCloud Drive 文件夹。
在 10.11 El Capitan 中,选择“Appname - iCloud” - 视图不会改变(您会看到 iCloud Drive 文件夹的顶层视图)。没有警告信息。在侧边栏选择iCloud下的Appname也是一样的结果。
考虑到应用程序的性质(数据是私有的,并且不能被任何其他应用程序读取),将 ubiquity 文件夹公开并不理想 - 所以我不想走这条路。
解决方法是在请求面板中搜索适当的文件类型(种类),然后选择搜索:这台 Mac - 这工作正常,之前打开的保存的 URL 也是如此。所以应用沙盒不会导致问题。
显然,我希望 10.10 的行为继续下去 - 但如何实现这一点或者它是否是一个错误并不明显。 Apple 可能假设所有使用 NSDocument 构建的应用都希望公开其应用容器。
【问题讨论】:
-
我可以确认,将适当的 NSUbiquitousContainers 键添加到 iOS 上的应用 plist 并将 NSUbiquitousContainerIsDocumentScopePublic 设置为 true(并触发 CFBundleVersion)立即使容器在 iOS 和 OS X 上都可见。不幸的是,这不是什么我想要。 :-(
标签: macos cocoa icloud osx-elcapitan