2013-07-15 77 views
-3

我做了一个应用程序,它可以处理录制的文件,如MP4波形等。与iCloud同步文件

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

哪种方法更好:基于文档的键值对还是核心数据?

同时,我有以下问题:

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

您应该首先阅读Apple的文档(https://developer.apple.com/icloud/documentation/)。 – Greg

+0

上述问题没有答案! – aakpro

+0

要回答您的第一点,请在[本文档]中向下滚动到**三种iCloud存储**(https://developer.apple.com/library/ios/#documentation/General/Conceptual/iCloudDesignGuide/Chapters/ Introduction.html)。 – Greg

回答

2

咨询的iCloud存储部分的三种在iCloud Design Guide给了我们这样的:

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

键值存储为离散值,如偏好设置,设置和简单的应用程序状态。

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

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

所以基本上,这取决于你想要做什么。上述段落不言自明,但如果仍不能确定,请阅读Designing for Key-Value Data in iCloud,Designing for Documents in iCloudDesigning for Core Data in iCloud以了解每个选项的功能和限制。


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

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

与OS X不同,iOS 没有垃圾箱删除的文件被移入。如果你删除了一个文件,它就没了。如果你想要垃圾功能,你必须自己实现它。

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

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

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

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


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

+0

非常感谢你!这是一个很大的帮助... – aakpro

+0

如果这解决了你的问题,请随时点击答案旁边的勾号:) – Greg