我正在使用Xcode 6.3.2为iOS 8.3开发一个需要从用户的iCloud帐户中提取CSV文件的应用程序。这些电子表格将由一个单独的系统生成并保存到用户的iCloud Drive文件夹中(将有多个电子表格,用户将在应用程序中键入一个确定应访问哪个电子表格的密钥字符串),这样做的方法将处理我的客户,除非不能以特殊方式完成,否则无关紧要。应用程序本身需要获取一个密钥字符串并在该用户的iCloud驱动器中搜索该文件,如果存在则获取该文件的内容,如果可能,将其保存在本地,以便即使iCloud Drive不可用也可以访问它。
当前应用程序使用应用程序包中的本地CSV文件(我已复制到我的Xcode项目中),所以现在我需要集成iCloud功能。
已解决: 我已经阅读了各种教程,向您展示如何上传和下载到iCloud Drive,或者从iCloud Drive下载,尽管我仍然对它的工作方式感到困惑。这让我质疑一个问题。
我现在假设后一个问题是正确的,但我现在担心我误解了它是如何工作的(因此问题一)。我已经设置了使用iCloud的应用程序 - 它成功地抓住了无处不在的URL,但在查询任何CSV文件时它什么也没有返回。我目前正在使用模拟器并已阅读它应该可以工作,虽然其他消息来源建议它不会,在模拟器上我已使用相应的Apple ID登录并启用了iCloud Drive - 但是我放在iCloud Drive文件夹中的文件在我的iMac上看不到。问题2 ......
编辑:我已经做了一些进一步的挖掘,并设法让iCloud在实际设备上运行 - 我想回答问题2:iCloud文档存储在iOS模拟器上无法正常工作。我也看过教程或截图,显示我对问题1的假设是正确的。
现在,当我转到设置>时,我可以看到我的应用程序在iCloud中存储了文档。 iCloud>存储>在我的iPad上管理存储,当我进入系统偏好设置> iCloud>管理。我可以看到数据存在,但是当我导航到Finder时,我无法看到我的app文件夹> iCloud Drive。我需要做的是将文件放入我的Mac上的iCloud Drive中的app文件夹中,以便可以通过我的应用程序读取它们。我读到只是将'Documents'文件夹附加到我的ubiquity URL的末尾会使它在finder中可见,但是这没有用。这引出了我的问题3:
答案 0 :(得分:3)
它花了一点时间,但我已经设法自己解决了这个问题,我会发布解决方案给其他任何正在努力解决这个问题的人。
应用程序将创建自己的iCloud容器,该容器在管理iCloud文档时可见,但默认情况下在Mac或icloud.com上的iCloud Drive文件夹中不可见。通过对info.plist文件的一些补充,可以在Finder中显示应用程序的iCloud文件夹(参见答案3)。
在模拟器上进行测试时,我根本无法看到任何已同步的文档,移动到iPad后,我可以看到应用程序和其他应用程序(如TextEdit)中的文档。这让我相信iCloud功能在iOS模拟器上无法正常工作。也许它可以通过手动将文件添加到适当的容器文件夹来工作 - 但实际上这不足以完全测试。
如上所述,将应用程序的iCloud文件夹公开需要对info.plist文件进行一些添加。在Xcode 6.3.2中,这将如下所示(根据需要设置模糊的包标识符和ContainerName,并分别增加Bundle Version和Bundle Version String):