iOS网络编程-解决iCloud文档存储过程中文档冲突问题
来源:互联网 发布:淘宝店店长职责 编辑:程序博客网 时间:2024/05/15 18:42
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:selfname:UIDocumentStateChangedNotification object:nil]; ⑦//从文档协调者中解除CloudDocument对象[NSFileCoordinator removeFilePresenter:_myCloudDocument]; ⑧}
出自《iOS网络编程与云端应用最佳实践》作者:关东升 @tony_关东升
- iOS网络编程-解决iCloud文档存储过程中文档冲突问题
- iOS网络编程-解决iCloud文档存储过程中文档冲突问题
- iOS网络编程-解决iCloud文档存储过程中文档冲突问题
- iOS网络编程-iCloud文档存储编程实例
- iOS网络编程-iCloud文档存储编程实例
- iOS网络编程-iCloud文档存储编程实例
- iOS网络编程-iCloud文档存储编程实例
- iOS网络编程-iCloud文档存储编程实例
- iOS网络编程-iCloud键值数据存储编程实例
- iOS网络编程-iCloud键值数据存储编程实例
- iOS网络编程-iCloud键值数据存储编程实例
- iOS网络编程-iCloud键值数据存储编程实例
- iOS网络编程-iCloud键值数据存储编程实例
- iOS网络编程-iCloud键值数据存储编程实例
- iOS网络编程-配置iCloud-图文解说
- iOS网络编程-配置iCloud-图文解说
- iOS网络编程-配置iCloud-图文解说
- iOS中理解iCloud数据存储
- Linux 2.6.21 支持Ipv6的裁剪
- GCC编译过程分解
- CF:94A. Restoring Password
- Object-C 协议protocol
- Oracle 查询表字段属性的方法
- iOS网络编程-解决iCloud文档存储过程中文档冲突问题
- 界面开发概述
- (转)理解collate Chinese_PRC_CI_AS
- Java编码转换工具类
- 关键词备忘录(不断更新中...)
- 在对象之间搬移特性之四 :Inline Class(将类内联化)
- Having fun web crawling with phantomJs
- UITableview 上提刷新
- 电影之记忆2:(杀手代号47)