iOS网络编程-解决iCloud文档存储过程中文档冲突问题

iCloud文档在保存的过程中难免会发生冲突,我们必须要有一套解决冲突的策略。策略的采用要根据用户的需求而定,有的简单有的复杂,最简单的是直接使用当前版本覆盖冲突版本。复杂的策略,例如:如果是两个文本文件冲突,可以将两个冲突点列出来,让用户来判断再进行保存。

我们采用的策略是使用当前版本覆盖以前的版本。解决冲突首先需要在updateUbiquitousDocuments:方法中注册UIDocumentStateChangedNotification通知:

//当iCloud中的文件变化时候调用

- (void)updateUbiquitousDocuments:(NSNotification *)notification {

… …

if (_myCloudDocument) {

//注册CloudDocument对象到文档协调者,文档状态变化才能收到通知

[NSFileCoordinator addFilePresenter:_myCloudDocument];       ①

//注册文档状态变化通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resolveConflict:)

name:UIDocumentStateChangedNotification object:nil];        ②

}

}

//文档冲突解决

- (void)resolveConflict:(NSNotification *)notification {

if (_myCloudDocument

&& _myCloudDocument.documentState == UIDocumentStateInConflict) { ③

NSLog(@”冲突发生”);

//文档冲突解决策略

NSError *error;

if (![NSFileVersion removeOtherVersionsOfItemAtURL: _

myCloudDocument.fileURL error:&error]) { ④

NSLog(@”移除其它的文档: %@”, [error localizedFailureReason]);

return;

}

_myCloudDocument.contents = _txtContent.text; ⑤

[_myCloudDocument updateChangeCount:UIDocumentChangeDone];    ⑥

}

[[NSNotificationCenter defaultCenter] removeObserver:self

name:UIDocumentStateChangedNotification object:nil]; ⑦

//从文档协调者中解除CloudDocument对象

[NSFileCoordinator removeFilePresenter:_myCloudDocument];     ⑧

}

出自《iOS网络编程与云端应用最佳实践》作者:关东升 @tony_关东升

时间: 2024-09-17 22:15:40

iOS网络编程-解决iCloud文档存储过程中文档冲突问题的相关文章

iOS网络编程-配置iCloud-图文解说

配置iCloud 开发iCloud应用一方面需要准备真实的iOS设备,另一方面还需要有iOS开发者账号, 使用iOS开发者账号登录到iOS开发中心的配置门户网站(iOS Provisioning Portal 网址为https://developer.apple.com/ios/manage/overview/index.action),可以为应用做一些与iCloud有关的配置工作.这些工作包括: 创建App ID 首先需要为应用创建App ID,App ID是针对应用的注册,该过程是在配置门户

iOS网络编程入门:解决iCloud文档存储过程中文档冲突问题

iCloud文档在保存的过程中难免会发生冲突,我们必须要有一套解决冲突的策略.策略的采用要根据用户的需求而定,有的简单有的复杂,最简单的是 直接使用当前版本覆盖冲突版本.复杂的策略,例如:如果是两个文本文件冲突,可以将两个冲突点列出来,让用户来判断再进行保存. 我们采用的策略是使用当前版本覆盖以前的版本.解决冲突首先需要在updateUbiquitousDocuments:方法中注册UIDocumentStateChangedNotification通知: //当iCloud中的文件变化时候调用

iOS网络编程-iCloud文档存储编程实例

iCloud文档存储编程相对键值数据存储而言比较复杂,涉及到自定义文档类.获得iCloud文档目录.查找Ubiquity容器中的文档.保存文档和解决文档冲突等内容. 实例:iCloud文档存储编程设计 实例介绍一下iCloud文档存储编程过程,画面中有一个文本框和一个按钮控件,在设备1输入内容,点击"保存数据"按钮,将数据保存iCloud服务器.右图是设备2画面,过几秒钟后设备2上会读取iCloud服务器端数据,并显示在文本框中. 配置Xcode工程 编写iCloud文档存储编应用程序

iOS网络编程-iCloud键值数据存储编程实例

iCloud键值数据存储设计 iCloud键值数据存储编程实例,画面中有两个开关控件,左图是设备1点击"设置iCloud数据"按钮,将控件状态保存到iCloud服务器.右图是设备2画面,过几秒钟后设备2收到变更通知.     配置Xcode工程 使用Xcode创建一个iOS工程,工程创建好之后,选择TAGETS→MyNotes→Summary→Entitlements,我们可以在这里配置授权信息. 然后我们还需要应用设置代码签名标识,代码签名标识需要选择这个配置概要文件的.选择TAGE

《iOS网络编程与云端应用最佳实践》上线了-源码下载,样章-正式发售了

我的最新作品:<iOS网络编程与云端应用最佳实践>一书正式发售:(欢迎大家到京东.当当.亚马逊购买)    当当   亚马逊   京东 源码和试读章节和大家分享一下! <iOS网络编程与云端应用最佳实践>书籍源码下载地址(免费下载):   http://download.csdn.net/detail/tonny_guan/5419117 试读章节下载地址   http://download.csdn.net/detail/tonny_guan/5419123    可以通过微博在

iOS网络编程之七——本地用户凭证Cookie的应用

iOS网络编程之七--本地用户凭证Cookie的应用 一.何为Cookie     Cookie是网站为了便是终端身份,保存在终端本地的用户凭证信息.Cookie中的字段与意义由服务端进行定义.例如,当用户在某个网站进行了登录操作后,服务端会将Cookie信息返回给终端,终端会将这些信息进行保存,在下一次再次访问这个网站时,终端会将保存的Cookie信息一并发送到服务端,服务端根据Cookie信息是否有效来判断此用户是否可以自动登录. 二.iOS中进行Cookie管理的两个类     iOS中进

iOS网络编程之一——iOS网络框架简介

iOS网络编程之一--iOS网络框架简介 一.引言         通过网络,一款应用才能够内容丰富,才能够完成用户操作与后台数据的交互.网络编程是移动应用或游戏开发开发中不可缺少的技术.iOS原生的网络框架也十分完善,其中涉及到的许多类和协议用于处理网络开发中的各种需求 二.URL加载框架     iOS的URL加载系统包含许多类与协议,这些类和协议相互协作完成URL加载的信息配置,协议支持,身份验证,cookie和缓存等功能.APPLE开发文档中有如下图表示他们之间的关系:     关于UR

iOS网络编程之四——请求类NSURLRequest使用详解

iOS网络编程之四--请求类NSURLRequest使用详解 一.引言         在前面几篇博客中,介绍了iOS开发中的网络编程相关内容并且介绍了常用了两个平行的网络框架NSURLSession和NSURLConnection.无论是NSURLSession类还是NSURLConnection类,其网络请求都是通过NSURLRequest类进行发起的,本篇博客将介绍NSURLRequest类的用法和其中请求属性的设置.         前几篇博客地址如下: 1.iOS网络框架介绍:http

《iOS网络编程与云端应用最佳实践》微博转发送书了

<iOS网络编程与云端应用最佳实践>微博转发送书了! 新浪微博地址:http://weibo.com/2078101705/zy15U4a5D,转发本条微博即有机会获得<iOS网络编程与云端应用最佳实践>图书一本. 当当预售   亚马逊预售 现拿到出版社样书,应广大粉丝建议,搞一个微博转发送书,随机抽取转发粉丝送书3本. 截止5月30日晚6点. 在30日晚8点,会在多贝公开课<苹果电子商务探讨-iOS6 Passbook解析与开发>现场抽取中奖粉丝,公开课免费的,欢迎大