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,如需转载请自行联系原作者
相关文章
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的网络办公系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的网络办公系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的网络游戏交易平台信息管理系统附带文章和源代码设计说明文档ppt
基于ssm+vue.js+uniapp小程序的网络游戏交易平台信息管理系统附带文章和源代码设计说明文档ppt
43 1
|
3月前
|
安全 网络安全 Android开发
安卓与iOS开发:选择的艺术网络安全与信息安全:漏洞、加密与意识的交织
【8月更文挑战第20天】在数字时代,安卓和iOS两大平台如同两座巍峨的山峰,分别占据着移动互联网的半壁江山。它们各自拥有独特的魅力和优势,吸引着无数开发者投身其中。本文将探讨这两个平台的特点、优势以及它们在移动应用开发中的地位,帮助读者更好地理解这两个平台的差异,并为那些正在面临选择的开发者提供一些启示。
126 56
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的网络直播带货查询系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的网络直播带货查询系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
3月前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享安卓与iOS开发中的线程管理比较
【8月更文挑战第30天】本文将探讨网络安全与信息安全的重要性,并分享关于网络安全漏洞、加密技术和安全意识的知识。我们将了解常见的网络攻击类型和防御策略,以及如何通过加密技术和提高安全意识来保护个人和组织的信息安全。
|
3月前
|
运维 网络安全 iOS开发
厉害!外国网络工程师用Ansible给思科IOS设备升级!
厉害!外国网络工程师用Ansible给思科IOS设备升级!
|
5月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的网络相册的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的网络相册的详细设计和实现(源码+lw+部署文档+讲解等)
33 1
|
5月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的网络小说微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的网络小说微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
|
4月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的网络安全科普系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的网络安全科普系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于ssm+vue.js的数据结构课程网络学习平台附带文章和源代码设计说明文档ppt
基于ssm+vue.js的数据结构课程网络学习平台附带文章和源代码设计说明文档ppt
39 2
下一篇
无影云桌面