我有一个OS X / iOS应用程序,它使用旧式无处不在的容器ID TEAMID.com.companyname.product ,并在OS X和{{1上使用NSDocument
构建在iOS上。
使用内置的UIDocument
面板,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 Folders的顶级视图)。没有警告信息。在侧栏中选择iCloud下的Appname会产生相同的结果。
鉴于应用程序的性质(数据是私有的,并且不是为任何其他应用程序读取的),将ubiquity文件夹公开是不理想的 - 所以我不想走这条路。
解决方法是在请求面板中搜索相应的文件类型(种类),然后选择搜索:此Mac - 这样可以正常工作,之前打开的已保存网址也是如此。因此App沙盒不会导致问题。
显然我希望10.10的行为继续下去 - 但是如何实现这一目标或者它是否是一个bug并不明显。可能是Apple假设使用NSDocument构建的所有应用程序都希望将其App容器公开。
答案 0 :(得分:0)
看来这个问题是OS X 10.11中的一个错误,标准的NSDocument
文件打开/保存/移动面板无法被强制转换为旧行为。然而,一个相当简单的解决方案是提供两个新的应用程序菜单项:
[NSDocument moveDocumentToUbiquityContainer:]
移至iCloud 。答案 1 :(得分:0)
您需要将以下内容添加到info.plist文件中,以使应用程序iCloud容器公开。
<key>NSUbiquitousContainers</key>
<dict>
<key>HHWT75NS6T.au.com.ossh.appName</key>
<dict>
<key>NSUbiquitousContainerIsDocumentScopePublic</key>
<true/>
<key>NSUbiquitousContainerSupportedFolderLevels</key>
<string>None</string>
</dict>
</dict>