咨询iCloud Design Guide 中的三种 iCloud 存储 部分,我们可以得到以下信息:
iCloud 支持三种存储方式。要为您的应用选择正确的一个(或组合),请确保您了解每个应用的意图和功能。三种 iCloud 存储是:
键值存储用于离散值,例如偏好、设置和简单的应用状态。
文档存储,用于存储用户可见的基于文件的信息,例如文字处理文档、绘图和复杂的应用程序状态。
核心数据存储,适用于鞋盒式应用程序和基于服务器的多设备数据库解决方案,适用于结构化内容。 iCloud Core Data 存储建立在文档存储之上,并使用相同的 iCloud API。
所以基本上,这取决于你想做什么。上面的段落是不言自明和明确的,但是如果您仍然无法决定,请阅读 Designing for Key-Value Data in iCloud、Designing for Documents in iCloud 和 Designing for Core Data in iCloud 以了解每个选项的功能和限制。
iCloud File Management 应该回答您的其他问题。
1 & 2
您可以使用普通的NSFileManager 方法管理位于 iCloud 文档存储中的文件,这意味着您可以像在本地存储中一样管理 move、delete 和 copy 文件。
与 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,并用它来找出在此期间发生了什么变化。
希望此答案中的文档链接数量表明您的所有问题都已得到解答。