上次说到了iCloud的简单配置和key-value类型的简单使用,这次我们来看一下另外一种类型Documents
类型的使用。
相较于key-value的存储类型,Documents
是用来管理一些比较大的文件,比如用户创建的文档等等。
基本概念
iCloud Entitlements
在我们打开iCloud选项的时候,系统就是自动为我们添加一个 xxx.entitlements
的文件,这个东西用来保证应用的安全性,确保只有你的应用才能访问你自己创建的文档,系统也是依赖于他来区分用户的iCloud账户中每个应用的文档。
查看这个xxx.entitlements
我们会发现在他里边有这样的一个keyUbiquity Container Identifiers
,对应的value为iCloud.$(CFBundleIdentifier)
。其实这个$(CFBundleIdentifier)
就代表这你的APP ID。所以也可以看成是iCloud.com.zzr.ZZRiCloudDemo
。
NSFileManager
NSFileManager
主要是对文件的操作,我们用它来获取iCloud的存储地址。
根据我们的entitlements,通过NSFileManager
就可以获得iCloud的存储地址,在获取地址之后,我们要先判断一下获取的地址是否为空,如果这个地址为空,则说明用户的iCloud暂时不可用,接下来一切的操作都没办法进行下去。
|
|
UIDocument
UIDocument
主要是用于对文件内容的操作。
其实获取了文件的地址之后,我们已经可以直接对文件进行操作了,但是官方还是让我们通过UIDocument
来操作,因为当我们在对iCloud进行操作的时候,不止是只有我们自己对他进行操作,iCloud daemon
也会对iCloud操作,用UIDocument
操作能够保证存取安全。
在使用UIDocument
之前,我们新建一个类,继承于UIDocument
,并且重写两个方法:
|
|
NSMetadataQuery
NSMetadataQuery
主要用来查询数据。
增删改查
创建文档
有了之前的准备工作,创建一个文档就非常简单了,只要创建好我们要保存的文件,通过
|
|
就可以将文档上传到iCloud中了。
我们以一个txt文件作为示范。
|
|
修改文档
修改文档,其实就是重写文档,就是将上边创建文档中的UIDocumentSaveForCreating
改为UIDocumentSaveForOverwriting
。
|
|
删除文档
删除文档其实就是通过之前的地址获取到文件,然后调用remove方法即可。
|
|
查询文档
之前讲了增加、删除、修改,好像增删改查中只剩下查询这个方法没有介绍了。查询和前边几个有点不同,他需要用到NSMetadataQuery
。
|
|
直接调用startQuery
开始查询,iCloud就已经开始帮我们查询了,查询好之后,iCloud会通过通知来告诉我们查询到了东西。
所以我们注册两个通知
|
|
并相应他们
|
|
其中
|
|
就是查询到的内容的数组,遍历他,就可以获取到对应目录下的全部文件了。
Demo
先放一下demo的地址。
demo简单的制作了一个text文档的存储功能,一些交互没有完善,但是基本的增删改查功能都已经实现了。
以上就是iCloud Document
的简单使用。此文章仅供个人学习使用,如有不当,希望大佬指出。