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

我已经阅读了苹果文档和Ray Wenderlich的教程。 看来我不得不使用UIDocument,所以我在文档中阅读它。 我发现使用基于文档的方法是有效的。

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

现在,我需要将iCloud与我的旧模型一起整合。 我将如何以一种优雅/有效的方式来实现我的旧模式实施,并能够整合iCloud?

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

创build文件时

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

打开文件时

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

编辑文件时

  • 使用NSFileCoordinator来协调您的文件访问与无处不在的守护进程。
  • 使用NSFilePresenter获取文件更改的通知。

这些都在WWDC 2012会议(也许2011年,我不记得)的会议中讨论过,你需要的类和方法都在iOS文档中。