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

简介: <p>iCloud文档在保存的过程中难免会发生冲突,我们必须要有一套解决冲突的策略。策略的采用要根据用户的需求而定,有的简单有的复杂,最简单的是直接使用当前版本覆盖冲突版本。复杂的策略,例如:如果是两个文本文件冲突,可以将两个冲突点列出来,让用户来判断再进行保存。</p><p><span id="more-131"></span></p><p>我们采用的策略是使用当前版本覆盖以前的版本。解

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开发 数据库管理
|
Android开发 iOS开发 Web App开发
关于安卓图像显示比iOS差的原因(英文文档)
There are so many comparations between Android phone and iPhone. We cannot make the conclusion about which one is better, bu...
896 0
|
存储 缓存 数据格式
ios应用相关的性能优化及参考文档
ios app programming guide:  https://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/Introduction/Introduction.
1299 0
|
iOS开发
苹果官方文档:理解和分析ios应用崩溃日志
https://developer.apple.com/library/ios/technotes/tn2151/_index.html Technical Note TN2151 Understanding and Analyzing i...
1445 0