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:self
name:UIDocumentStateChangedNotification object:nil]; ⑦
//从文档协调者中解除CloudDocument对象
[NSFileCoordinator removeFilePresenter:_myCloudDocument]; ⑧
}
出自《iOS网络编程与云端应用最佳实践》作者:关东升 @tony_关东升
分享到:
相关推荐
传智播客iOS6免费公开课程-调用icloud 传智播客iOS6免费公开课程-调用icloud
前两年IOS应用源码-主要是用于毕业设计学习的。
《iOS网络编程与云端应用最佳实践》是介绍iOS 6网络编程和云端应用开发技术书籍,介绍了苹果网络、数据交换格式、WebService、iCloud、定位服务、地图、推送通知、Newsstand、应用内购买、Passbook、以及社交网络...
IOS应用源码之【应用】-iCloud代码示例.rar
这份文档总结了100个iOS开发/设计面试中可能会问到的问题,涵盖了非常全面的内容。主要包括以下几个方面: 1. 常见问题 包括一些基本的开场问题,如对iOS开发的热衷程度、参与过的开源项目、开发流程、测试过程等。 2...
OS X Yosemite- 设置 iCloud 钥匙串.docx
本资源是一步步学习iOS 5编程的项目源代码,非常适合初学者和有经验的开发者深入理解iOS应用开发。接下来,我们将详细探讨iOS 5中的关键知识点。 1. **Storyboards**: iOS 5引入了Storyboard,这是一种全新的UI...
《清华开发者书库:iOS网络编程与云端应用最佳实践》是介绍iOS 6网络编程和云端应用开发技术书籍,介绍了苹果网络、数据交换格式、Web Service、iCloud、定位服务、地图、推送通知、Newsstand、应用内购买、Passbook...
iOS网络编程与云端应用最佳实践随书代码,系统论述了iOS 6网络编程和云端应用开发技术,介绍了苹果网络、数据交换格式、Web Service、iCloud、定位服务、地图、推送通知、Newsstand、应用内购买、Passbook、社交网络...
其中,端到端加密确保了数据在传输和存储过程中的安全,而 Circle of Trust 则确保了只有信任的设备可以访问用户的数据。两步验证则提供了额外的一层保护,防止攻击者通过 stole 的 Apple ID 密码来访问用户的数据。...
iCloud-drive-docker是Docker环境中的简单iCloud驱动器客户端。 它使用 python库与iCloud驱动器服务器进行交互。 iCloud-drive-docker的主要用例是使用您的iCloud用户名和密码定期同步所需的或所有iCloud驱动器...
react-native-icloud-sync 用于与icloud同步的React-native包装器。 将其添加到您的项目 运行npm install react-native-icloud-sync --save 在XCode中打开您的项目,右键单击Libraries ,然后单击Add Files to ...
Lesson 24 Introduction to ICloud Storage Lesson 25 Introduction to CloudKit Lesson 26 Introduction to Core Data Lesson 27 Consuming RESTFUL JSON Web Services Section IV Beyond the Basics Lesson 28 ...
iOS 禁止同步到iCloud的的类别,可以对指定的目录文件设置为禁止同步
InflatableDonkey, iOS9/ios10/iOS11 iCloud备份概念概念证明 重要通知,6 2017年11月 。不能扩展原因以及立即效果,我将不再维护这个项目或者服务票。 我也无法透露有关 ios/iCloud力学的任何信息或者在这方面提供...
传智博客iOS6免费公开课程源码-APP中使用icloud
Laravel开发-icloud 关于云上传
iOS获取iCloud图库
icloud-照片应用程序 管理 iCloud 上的照片 安装 由于这在 npm 上尚不可用,您可以按照以下步骤安装该模块: 克隆这个仓库 $ git clone https://github.com/alexlincoln/icloud-photos-app.git 克隆icloud-session...
从Mac的Finder中访问你的iCloud文档.docx