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

简介:

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

 

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

 

 
  1. //当iCloud中的文件变化时候调用 
  2.  
  3. - (void)updateUbiquitousDocuments:(NSNotification *)notification { 
  4.  
  5. … … 
  6.  
  7. if (_myCloudDocument) { 
  8.  
  9. //注册CloudDocument对象到文档协调者,文档状态变化才能收到通知 
  10.  
  11. [NSFileCoordinator addFilePresenter:_myCloudDocument];       ① 
  12.  
  13. //注册文档状态变化通知 
  14.  
  15. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resolveConflict:) 
  16.  
  17. name:UIDocumentStateChangedNotification object:nil];        ② 
  18.  
  19.  
  20.  
  21. //文档冲突解决 
  22.  
  23. - (void)resolveConflict:(NSNotification *)notification { 
  24.  
  25. if (_myCloudDocument 
  26.  
  27. && _myCloudDocument.documentState == UIDocumentStateInConflict) { ③ 
  28.  
  29. NSLog(@”冲突发生”); 
  30.  
  31. //文档冲突解决策略 
  32.  
  33. NSError *error; 
  34.  
  35. if (![NSFileVersion removeOtherVersionsOfItemAtURL: _ 
  36.  
  37. myCloudDocument.fileURL error:&error]) { ④ 
  38.  
  39. NSLog(@”移除其它的文档: %@”, [error localizedFailureReason]); 
  40.  
  41. return
  42.  
  43.  
  44. _myCloudDocument.contents = _txtContent.text; ⑤ 
  45.  
  46. [_myCloudDocument updateChangeCount:UIDocumentChangeDone];    ⑥ 
  47.  
  48.  
  49. [[NSNotificationCenter defaultCenter] removeObserver:self 
  50.  
  51. name:UIDocumentStateChangedNotification object:nil]; ⑦ 
  52.  
  53. //从文档协调者中解除CloudDocument对象 
  54.  
  55. [NSFileCoordinator removeFilePresenter:_myCloudDocument];     ⑧ 
  56.  
  57. 本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1193879,如需转载请自行联系原作者
相关文章
|
11月前
|
安全 Linux 虚拟化
Cisco IOS XRv 9000 Router IOS XR Release 7.11.2 MD - 思科 IOS XR 网络操作系统
Cisco IOS XRv 9000 Router IOS XR Release 7.11.2 MD - 思科 IOS XR 网络操作系统
665 3
Cisco IOS XRv 9000 Router IOS XR Release 7.11.2 MD - 思科 IOS XR 网络操作系统
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的网络办公系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的网络办公系统的详细设计和实现(源码+lw+部署文档+讲解等)
259 2
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的网络游戏交易平台信息管理系统附带文章和源代码设计说明文档ppt
基于ssm+vue.js+uniapp小程序的网络游戏交易平台信息管理系统附带文章和源代码设计说明文档ppt
304 1
|
安全 网络安全 Android开发
安卓与iOS开发:选择的艺术网络安全与信息安全:漏洞、加密与意识的交织
【8月更文挑战第20天】在数字时代,安卓和iOS两大平台如同两座巍峨的山峰,分别占据着移动互联网的半壁江山。它们各自拥有独特的魅力和优势,吸引着无数开发者投身其中。本文将探讨这两个平台的特点、优势以及它们在移动应用开发中的地位,帮助读者更好地理解这两个平台的差异,并为那些正在面临选择的开发者提供一些启示。
338 56
|
存储 人工智能
从零到一打造知识网络:你选对文档软件了吗?
在信息爆炸时代,学术工作者面临高效管理知识的挑战。传统文档管理软件难以满足“知识动态积累”与“多领域交叉”的需求。动态结构化看板通过多维度卡片化管理,以标签、层级和网状关联方式动态呈现文档和笔记,实现知识的系统化整合。例如多维标签系统和文档流动视图,能够帮助快速检索和关联资料,成为学术研究的“第二大脑”。
|
JavaScript Java 测试技术
基于SpringBoot+Vue的网络相册的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的网络相册的详细设计和实现(源码+lw+部署文档+讲解等)
255 1
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的网络小说微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的网络小说微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
344 1
|
JavaScript Java 测试技术
基于ssm+vue.js的数据结构课程网络学习平台附带文章和源代码设计说明文档ppt
基于ssm+vue.js的数据结构课程网络学习平台附带文章和源代码设计说明文档ppt
221 2
|
JavaScript Java 测试技术
基于ssm+vue.js的网络教学平台附带文章和源代码设计说明文档ppt
基于ssm+vue.js的网络教学平台附带文章和源代码设计说明文档ppt
205 1
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的网络财务的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的网络财务的详细设计和实现(源码+lw+部署文档+讲解等)
282 1