如何在非基于文档的应用程序上集成iCloud?

时间:2013-03-26 07:09:24

标签: ios icloud foundation

我已经阅读了Apple文档和Ray Wenderlich的教程。似乎我被迫使用UIDocument所以我在文档中读了它。我发现使用基于文档的方法很有效。

我的问题是我不想被特定于平台(iOS)的技术束缚,因此我的应用程序有自己的模型,从头开始只从NSObject继承。这包括保存/加载。

现在,我需要将iCloud与旧模型集成在一起。我将如何以优雅/有效的方式实现这一目标,以便保持我的旧模型实现并能够集成iCloud?

1 个答案:

答案 0 :(得分:8)

您绝不会被迫使用UIDocument。您可以通过NSFileManagerNSMetadataQuery使用iCloud。一般方法是:

创建文件时

  • 在没有iCloud的情况下在本地创建文件
  • 使用-[NSFileManager setUbiquitous:itemAtURL:destinationURL:error:]将文件传输到iCloud存储。
  • (如有必要)使用NSMetadataQuery或轮询网址资源值检查上传进度。

打开文件时

  • 使用NSMetadataQuery查找iCloud驻留文件
  • 使用-[NSFileManager startDownloadingUbiquitousItemAtURL:error:]开始下载或将本地副本与云副本同步。
  • 使用NSMetadataQuery检查上传进度,或使用[NSURL resourceValuesForKeys:]轮询网址资源值。

编辑文件时

  • 使用NSFileCoordinator与ubiquity守护程序协调文件访问。
  • 使用NSFilePresenter获取文件更改通知。

2012年WWDC(可能还有2011年,我不记得)的会议中都涵盖了这一点,您需要的类和方法都在iOS文档中。