`
jishublog
  • 浏览: 881488 次
文章分类
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

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

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

    IOS网络编程与云端应用

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

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

    前两年IOS应用源码-主要是用于毕业设计学习的。

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

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

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

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

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

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

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

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

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

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

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

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

    CoreData-ICloud

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

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

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

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

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

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

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

    IOS禁止同步到iCloud的封装类

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

    ios-App-App.zip

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

    iCloudBypass ios13.3绕id工具.zip

    "iCloudBypass ios13.3绕id工具"就是为了解决这类问题而设计的软件。 该软件是专为苹果iOS 13.3.1版本设计的,其主要目标是帮助用户绕过iCloud ID锁。在iOS 13.3.1中,苹果对iCloud的安全性进行了进一步强化,使得...

    藏经阁-Intercepting-iCloud-Keychain.pdf

    其中,端到端加密确保了数据在传输和存储过程中的安全,而 Circle of Trust 则确保了只有信任的设备可以访问用户的数据。两步验证则提供了额外的一层保护,防止攻击者通过 stole 的 Apple ID 密码来访问用户的数据。...

    icloud-drive-docker:Dockerized iCloud驱动器

    iCloud-drive-docker是Docker环境中的简单iCloud驱动器客户端。 它使用 python库与iCloud驱动器服务器进行交互。 iCloud-drive-docker的主要用例是使用您的iCloud用户名和密码定期同步所需的或所有iCloud驱动器...

    react-native-icloud-sync:用于与icloud同步的React-native包装器

    react-native-icloud-sync 用于与icloud同步的React-native包装器。 将其添加到您的项目 运行npm install react-native-icloud-sync --save 在XCode中打开您的项目,右键单击Libraries ,然后单击Add Files to ...

    Swift.iOS.24-Hour.Trainer.111907355

    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 ...

Global site tag (gtag.js) - Google Analytics