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,如需转载请自行联系原作者
相关文章
|
10月前
|
缓存 iOS开发
IOS网络编程:使用 URLSession 实现网络请求的步骤是什么?
IOS网络编程:使用 URLSession 实现网络请求的步骤是什么?
143 1
|
7月前
|
安全 网络安全 Android开发
安卓与iOS开发:选择的艺术网络安全与信息安全:漏洞、加密与意识的交织
【8月更文挑战第20天】在数字时代,安卓和iOS两大平台如同两座巍峨的山峰,分别占据着移动互联网的半壁江山。它们各自拥有独特的魅力和优势,吸引着无数开发者投身其中。本文将探讨这两个平台的特点、优势以及它们在移动应用开发中的地位,帮助读者更好地理解这两个平台的差异,并为那些正在面临选择的开发者提供一些启示。
148 56
|
7月前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享安卓与iOS开发中的线程管理比较
【8月更文挑战第30天】本文将探讨网络安全与信息安全的重要性,并分享关于网络安全漏洞、加密技术和安全意识的知识。我们将了解常见的网络攻击类型和防御策略,以及如何通过加密技术和提高安全意识来保护个人和组织的信息安全。
|
7月前
|
运维 网络安全 iOS开发
厉害!外国网络工程师用Ansible给思科IOS设备升级!
厉害!外国网络工程师用Ansible给思科IOS设备升级!
|
10月前
|
移动开发 网络协议 安全
iOS审核在ipv6网络下无法访问服务器的问题及解决方案
iOS审核在ipv6网络下无法访问服务器的问题及解决方案
250 0
|
10月前
|
XML JSON API
IOS网络编程:介绍一下 Alamofire 库。
IOS网络编程:介绍一下 Alamofire 库。
222 3
|
10月前
|
缓存 JSON API
IOS网络编程:什么是 RESTful API?如何使用 RESTful 风格设计 API?
IOS网络编程:什么是 RESTful API?如何使用 RESTful 风格设计 API?
220 3
|
安全 定位技术 开发工具
IOS9中的一些网络配置
iOS9为了增强数据访问安全,将所有的http请求都改为了https,为了能够在iOS9中正常使用地图SDK,请在"Info.plist"中进行如下配置,否则影响SDK的使用。
106 0

热门文章

最新文章

  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 2
    iOS|解决 setBrightness 调节屏幕亮度不生效的问题
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 4
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 5
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 6
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 7
    iOS各个证书生成细节
  • 8
    iOS|记一名 iOS 开发新手的前两次 App 审核经历
  • 9
    Java网络编程,多线程,IO流综合小项目一一ChatBoxes
  • 10
    Go语言的网络编程与TCP_UDP