使用iCloud同步文件

时间:2013-07-15 05:59:17

标签: iphone ios ipad icloud

我制作了一个适用于录制文件的应用,例如MP4 wave等。

我想将我的应用与iCloud同步,但我不知道如何。

哪种方法更好:基于文档,键值对或核心数据?

我还有以下问题:

  1. 我们可以删除文件吗?如果是这样,它会变成垃圾吗?
  2. 我们可以将文件移动到另一个文件夹吗?
  3. 我们如何知道文件更改?
  4. 是否有任何机制可以告知我们应用关闭时发生的更改/创建/删除?

1 个答案:

答案 0 :(得分:3)

咨询iCloud Design Guide中的三种iCloud存储部分,告诉我们:

  

iCloud支持三种存储。要为您的应用选择正确的(或组合),请确保您了解每个应用的意图和功能。三种iCloud存储是:

     离散值的

键值存储,例如偏好设置,设置和简单应用状态。

     

文档存储,用于基于用户可见文件的信息,如文字处理文档,绘图和复杂的应用状态。

     

核心数据存储用于鞋盒式应用和基于服务器的多设备数据库解决方案,用于结构化内容。 iCloud核心数据存储基于文档存储构建,采用相同的iCloud API。

所以基本上,这取决于你想做什么。上面的段落非常明确且明确,但如果您仍然无法决定,请阅读Designing for Key-Value Data in iCloudDesigning for Documents in iCloudDesigning for Core Data in iCloud以了解每个选项的功能和限制。< / p>


iCloud File Management应该为您的其他问题提供答案。

1&amp; 2

您使用常规NSFileManager方法管理位于iCloud文档存储中的文件,这意味着您可以像在本地存储中一样movedeletecopy文件

与OS X不同,iOS 没有已删除文件的垃圾箱。如果删除文件,它就会消失。如果你想要垃圾功能,你必须自己实现它。

3

This guide介绍了如何在应用的iCloud文件夹中发现文件。这里的关键代码是

[[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(processFiles:)
    name:NSMetadataQueryDidUpdateNotification
    object:nil];

NSMetadataQueryDidUpdateNotification发布了元数据查询更新。如果让它继续运行,每次文件外部更改时都会发布,因此您可以采取适当的措施。有关详细信息,请参阅NSMetadataQuery Class Reference

4

我不明白为什么你需要这样做,因为你可以在应用程序启动时获取当前在iCloud中的文件列表,并允许用户编辑它们。应该没有理由知道文件已经更改。但是,如果由于某种原因确实需要执行此操作,则可以在本地保存NSMetadataQuery返回的相关数据,然后在应用程序启动时加载该文件,并将保存的列表与列表中的列表进行比较。 iCloud中的文件,并使用它来确定在此期间发生了哪些变化。


希望本答案中的文档链接数量表明您的所有问题都已得到解答。