iCloud文档存储编程相对键值数据存储而言比较复杂,涉及到自定义文档类、获得iCloud文档目录、查找Ubiquity容器中的文档、保存文档和解决文档冲突等内容。
实例:iCloud文档存储编程设计
实例介绍一下iCloud文档存储编程过程,画面中有一个文本框和一个按钮控件,在设备1输入内容,点击“保存数据”按钮,将数据保存iCloud服务器。右图是设备2画面,过几秒钟后设备2上会读取iCloud服务器端数据,并显示在文本框中。
配置Xcode工程
编写iCloud文档存储编应用程序也需要在Xcode工程中进行一些配置,选择TAGETS→MyNotes→Summary→Entitlements
在图中Ubiquity Contrainers添加com.51work6.MyNotes,这是Ubiquity容器标识,可以有多个Ubiquity容器标识,这个容器标识代表着不同的目录。com.51work6.MyNotes代表目录如下所示:
/var/mobile/Library/Mobile Documents/98Z3R5XU29~com~51work6~MyNotes/
其中的98Z3R5XU29是在iOS开发者配置门户网站创建App ID时候生成的,它被称为Team ID。
如果应用中没有使用iCloud键值数据存储key-Value Store可以不用配置。
自定义文档类
我 们需要自己封装一个文档类,它继承抽象类UIDocument,而UIDocument实现NSFilePresenter协议。实现 NSFilePresenter协议的类,它所代表的文件和目录可以被查看和编辑,这些NSFilePresenter实现类与文件协调者类 NSFileCoordinator结合使用,可以协调管理文件或目录。
这个类我们命名为MyCloudDocument, MyCloudDocument的代码如下:
#import <UIKit/UIKit.h> @interface MyCloudDocument : UIDocument ① @property (strong, nonatomic) NSString *contents; @end #import ”MyCloudDocument.h” @implementation MyCloudDocument //加载数据 - (BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError **)outError ② { if ([contents length] > 0) { self.contents = [[NSString alloc] initWithData:contents encoding:NSUTF8StringEncoding]; ③ } return YES; } //保存数据 - (id)contentsForType:(NSString *)typeName error:(NSError **)outError ④ { return [self.contents dataUsingEncoding:NSUTF8StringEncoding]; ⑤ } @end
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文档
, 目录
, 存储
, 容器
, icloud
, contents
, iOS获取设备标识
, 存储类
配置容器网络
,以便于您获取更多的相关知识。