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]; ⑧ }
本文出自 “关东升” 博客,请务必保留此出处http://2009315319.blog.51cto.com/701759/1193879
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文档
, 冲突
, 版本
, nsnotification
, error
, 解决冲突
, 文件冲突
, 策略
版本冲突
,以便于您获取更多的相关知识。