`

iOS网络编程-解决iCloud文档存储过程中文档冲突问题

阅读更多

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_关东升

分享到:
评论

相关推荐

    IOS应用源码Demo-iCloud代码示例-毕设学习.zip

    【标题】"IOS应用源码Demo-iCloud代码示例-毕设学习.zip"指的是一个包含iOS应用程序源代码的压缩文件,特别关注了如何在iOS应用中集成和使用iCloud功能。这个资源对于那些正在进行毕业设计或者希望深入理解iOS开发,...

    传智播客iOS6免费公开课程-调用icloud

    在本课程中,我们将深入探讨如何在iOS应用中调用iCloud服务,这是传智播客针对iOS6推出的一门免费公开课程。iCloud是苹果公司提供的一个云存储和云计算服务,它允许用户在各种Apple设备之间同步和存储数据,如照片、...

    IOS应用源码之【应用】-iCloud代码示例.rar

    在iOS开发中,iCloud是一项强大的云存储服务,它允许开发者将用户的数据同步到苹果的云端,以便在多个设备间无缝地共享和访问。这个压缩包"【应用】-iCloud代码示例.rar"提供了iOS应用中使用iCloud功能的具体代码...

    IOS网络编程与云端应用

    书中会介绍WebSocket的工作原理、如何在iOS中集成WebSocket库(如Starscream),以及如何实现双向通信和心跳检测。 四、安全与认证 在进行网络通信时,安全性至关重要。本书涵盖了HTTPS加密、OAuth认证、SSL/TLS...

    《iOS网络编程与云端应用最佳实践》源码

    《iOS网络编程与云端应用最佳实践》是介绍iOS 6网络编程和云端应用开发技术书籍,介绍了苹果网络、数据交换格式、WebService、iCloud、定位服务、地图、推送通知、Newsstand、应用内购买、Passbook、以及社交网络...

    ios问答题-这份文档总结了100个iOS开发/设计面试中可能会问到的问题,涵盖了非常全面的内容.md

    这份文档总结了100个iOS开发/设计面试中可能会问到的问题,涵盖了非常全面的内容。主要包括以下几个方面: 1. 常见问题 包括一些基本的开场问题,如对iOS开发的热衷程度、参与过的开源项目、开发流程、测试过程等。 2...

    OS X Yosemite- 设置 iCloud 钥匙串.docx

    在 OS X Yosemite 中启用 iCloud 钥匙串,可以确保这些信息在您的所有苹果设备(如 Mac、iPhone 和 iPad)之间保持同步,前提是设备运行的是支持 iCloud 钥匙串的系统版本,即 OS X v10.9 或更高版本,或 iOS 7.0.3 ...

    一步一步学习iOS5编程-项目源代码

    本资源是一步步学习iOS 5编程的项目源代码,非常适合初学者和有经验的开发者深入理解iOS应用开发。接下来,我们将详细探讨iOS 5中的关键知识点。 1. **Storyboards**: iOS 5引入了Storyboard,这是一种全新的UI...

    IOS网络编程与云端应用最佳实践 + 随书代码.zip

    《清华开发者书库:iOS网络编程与云端应用最佳实践》是介绍iOS 6网络编程和云端应用开发技术书籍,介绍了苹果网络、数据交换格式、Web Service、iCloud、定位服务、地图、推送通知、Newsstand、应用内购买、Passbook...

    iOS 5 Core framework iCloud

    - **错误处理**:在使用 iCloud 时,可能会遇到各种网络问题或服务器故障,因此需要编写稳健的代码来处理这些问题。 - **用户体验考虑**:在设计应用时,要考虑 iCloud 对用户体验的影响,比如加载时间、数据可用性...

    CoreData-ICloud

    CoreData 是苹果公司提供的一种数据管理框架,用于iOS和macOS应用中存储、管理和检索对象。它是Objective-C和Swift开发者处理复杂数据模型的强大工具。在iOS应用中,使用CoreData可以方便地创建、修改和查询数据库,...

    Swift编程-iOS应用-沙盒模型

    Swift编程在iOS应用开发中扮演着至关重要的...总之,Swift编程-iOS应用-沙盒模型的学习不仅关乎技术实践,更关乎用户隐私保护和应用安全性的意识。理解并掌握沙盒模型,能让你的iOS应用更加专业且符合苹果的开发规范。

    从Mac的Finder中访问你的iCloud文档.docx

    标题中的“从Mac的Finder中访问你的iCloud文档.docx”和描述暗示了本文将介绍如何在Mac操作系统中,通过Finder来访问并管理存储在iCloud云端的文档。这一功能自OS X 10.7.2(Lion)版本开始引入,并在后续的系统更新...

    传智博客iOS6免费公开课程源码-APP中使用icloud

    总之,通过学习这个传智博客的iOS6免费公开课程源码,开发者不仅能掌握iCloud的基本用法,还能了解到如何在实际项目中解决同步、冲突、权限和用户体验等关键问题。这对于想要提升iOS应用功能和用户体验的开发者来说...

    iOS网络编程与云端应用最佳实践

    iOS网络编程是iOS应用开发中非常重要的一个环节,尤其是在涉及到云端应用时,网络编程成为了数据交换、获取云端数据、推送通知等功能实现的基础。在iOS开发中,使用网络编程技术可以实现各种各样的功能,例如与苹果...

    iOS网络编程与云端应用最佳实践随书代码

    iOS网络编程与云端应用最佳实践随书代码,系统论述了iOS 6网络编程和云端应用开发技术,介绍了苹果网络、数据交换格式、Web Service、iCloud、定位服务、地图、推送通知、Newsstand、应用内购买、Passbook、社交网络...

    IOS应用源码之【应用】iCloud代码示例.rar

    在iOS应用开发中,iCloud是一项非常重要的服务,它允许开发者将用户的数据同步到苹果的云存储服务,以便在不同的设备之间共享和访问。这个压缩包"【应用】iCloud代码示例.rar"包含了实现iCloud功能的具体源代码,...

    iOS-Contacts-App

    我们将深入探讨iOS中与联系人管理相关的技术知识。 1. **Core Data框架**: - Core Data是Apple提供的一个对象图形管理系统,用于存储和检索应用程序的数据。在Contacts App中,Core Data用于存储联系人的所有信息...

    IOS禁止同步到iCloud的封装类

    在iOS开发中,iCloud是苹果提供的一种云存储服务,允许用户在不同设备间同步数据。然而,在某些情况下,开发者可能需要阻止特定的文件或目录同步到iCloud,以保护用户的隐私、避免数据泄露或是优化应用程序性能。...

    ios-App-App.zip

    在iOS中,这种通信通常涉及以下几种方式: 1. **URL Scheme**: 应用可以注册自己的URL Scheme,当其他应用尝试通过特定URL打开时,系统会将请求转发给注册该URL的应用。这常用于应用间跳转和数据传递。 2. **...

Global site tag (gtag.js) - Google Analytics