iOS网络编程-解决iCloud文档存储过程中文档冲突问题-阿里云开发者社区

开发者社区> 技术小阿哥> 正文

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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
.NET数据库编程求索之路--6.使用ADO.NET实现(三层架构篇-使用List传递数据-基于存储过程)(1)
6.使用ADO.NET实现(三层架构篇-使用List传递数据-基于存储过程)(1)    【 夏春涛 email: xchuntao@163.com  blog: http://www.cnblogs.
715 0
.NET数据库编程求索之路--6.使用ADO.NET实现(三层架构篇-使用List传递数据-基于存储过程)(2)
6.使用ADO.NET实现(三层架构篇-使用List传递数据-基于存储过程)(2)      【 夏春涛 email: xchuntao@163.com  blog: http://www.cnblogs.
751 0
解决Jquery与Shopex调用的mootools冲突问题
在%thems%/block/header.html 里面的""标签前加入以下代码 jQuery.noConflict(); 这步是关键,在前面,加入以上代码。然后把使用jquery里面的所有$都替换为jQuery就行了(替换选择器)。
631 0
Android官方开发文档Training系列课程中文版:连接无线设备之网络服务搜索功能
原文地址:http://android.xsoftlab.net/training/connect-devices-wirelessly/index.html 引言 Android设备除了可以与服务器建立连接之外,Android无线API还允许处于同一网段下的两台设备建立连接,或者是物理距离相近的两台设备建立连接。
804 0
IOCP模型与网络编程
一。前言:        在老师分配任务(“尝试利用IOCP模型写出服务端和客户端的代码”)给我时,脑子一片空白,并不知道什么是IOCP模型,会不会是像软件设计模式里面的工厂模式,装饰模式之类的那些呢?嘿嘿,不过好像是一个挺好玩的东西,挺好奇是什么东西来的,又是一个新知识啦~于是,开始去寻找一大堆的资料,为这个了解做准备,只是呢,有时还是想去找一本书去系统地学习一下,毕竟网络的资料还是有点零散。
890 0
iOS网络编程-解决iCloud文档存储过程中文档冲突问题
<p>iCloud文档在保存的过程中难免会发生冲突,我们必须要有一套解决冲突的策略。策略的采用要根据用户的需求而定,有的简单有的复杂,最简单的是直接使用当前版本覆盖冲突版本。复杂的策略,例如:如果是两个文本文件冲突,可以将两个冲突点列出来,让用户来判断再进行保存。</p> <p><span id="more-131"></span></p> <p>我们采用的策略是使用当前版本覆盖以前的版本。解
1252 0
Android官方开发文档Training系列课程中文版:网络操作之XML解析
原文地址:http://android.xsoftlab.net/training/basics/network-ops/xml.html 扩展标记语言(XML)是一系列有序编码的文档。
544 0
8434
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载