• 文档冲突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_关东升

    文章结束给大家分享下程序员的一些笑话语录: 爱情观
      爱情就是死循环,一旦执行就陷进去了。
      爱上一个人,就是内存泄露--你永远释放不了。
      真正爱上一个人的时候,那就是常量限定,永远不会改变。
      女朋友就是私有变量,只有我这个类才能调用。
      情人就是指针用的时候一定要注意,要不然就带来巨大的灾难。

  • 相关阅读:
    SwiftyUserDefaults-封装系统本地化的框架推荐
    转:AFNetworking 与 UIKit+AFNetworking 详解
    转:KVC/KVO原理详解及编程指南
    转:NSString什么时候用copy,什么时候用strong
    代码重构原则
    转:【iOS开发每日小笔记(十一)】iOS8更新留下的“坑” NSAttributedString设置下划线 NSUnderlineStyleAttributeName 属性必须为NSNumber
    转:iOS程序main函数之前发生了什么
    转:iOS 屏幕适配,autoResizing autoLayout和sizeClass图文详解
    Apple macOS Mojave Intel Graphics Driver组件任意代码执行漏洞
    巧用"记事本"让病毒无效运行
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3063411.html
Copyright © 2020-2023  润新知