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

Syl*_*eed 5 foundation ios icloud

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

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

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

Tom*_*ton 8

你不会被迫使用UIDocument.您可以通过NSFileManager和使用iCloud NSMetadataQuery.一般方法是:

创建文件时

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

打开文件时

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

编辑文件时

  • 使用NSFileCoordinator协调与无处不在的守护程序文件的访问.
  • 使用NSFilePresenter得到的变化通知文件.

这些都包含在WWDC 2012(也许是2011年,我不记得)的会议中,您需要的类和方法都在iOS文档中.