您现在的位置是:首页 > 文章详情

《iOS组件与框架——iOS SDK高级特性剖析》——第8章,第8.5节解决冲突

日期:2017-05-01点击:409

本节书摘来自异步社区《iOS组件与框架——iOS SDK高级特性剖析》一书中的第8章,第8.5节解决冲突,作者 【美】Kyle Richter , Joe Keeley,更多章节内容可以访问云栖社区“异步社区”公众号查看

8.5 解决冲突
iOS组件与框架——iOS SDK高级特性剖析
文档处于冲突状态时,可通过NSFileVersion类获悉文档的各种版本。用户轻按按钮Resolve Conflict时,将调用方法resolveConflict-Tapped:。这个方法收集处于冲突状态的文档的版本信息,并实例化一个自定义的页面视图控制器,让用户能够浏览不同的冲突版本并选择最终版本。


8534934692f2117fd02dbb94e7086ee8caf55986

这个方法首先获取冲突版本,即不能合并到本地版本的远程版本,并将它们放到一个数组中,因为可能存在多个冲突版本。接下来,这个方法获取文档的当前版本,即本地编辑的版本,并将它和冲突版本一起加入到一个可变数组中。这个可变数组提供了所有版本,供用户进行评估以选择正确的版本。然后,这个方法创建一个ICFConflictResolutionViewController实例,这是一个自定义页面视图控制器,让用户能够浏览冲突版本并选择正确版本。接下来,设置这个页面视图控制器的属性,让它知道有哪些冲突版本、当前版本是哪个(这对后面解决冲突很重要)、处于冲突状态的备忘录的URL以及选定正确版本后要调用的委托。

注意:

页面视图控制器提供了浏览冲突版本的方便途径,但并非只能采用这种方式。任何可显示冲突版本信息并让用户选择正确版本的方式都可行。
接下来,显示冲突解决页面视图控制器,如图8.6所示。


ee0b169ac6d9d39c17122ed1de4fb67ae7a71861

对于备忘录的每个冲突版本,冲突解决页面视图控制器都创建一个ICFConflictVersionView Controller实例,用于显示该冲突版本的信息。在方法viewControllerAtIndex:storyboard:中,页面视图控制器根据需要实例化版本视图控制器,并指定它应显示哪个NSFileVersion。


6d3bb5fe5a52a0d0c84426e3d76a17fffb19ef44

为显示各个版本的信息,版本视图控制器在方法viewDidLoad中从其NSFileVersion那里获取这些信息,并更新用户界面。


d43e528d1d24e8c47ebaff9151d00c7e988cc4d0

详细视图控制器再根据选定版本是否是当前版本采取相应的措施,以解决冲突;这是在方法noteConflictResolve:forCurrentVersion:中完成的。这个方法检查传入的参数isCurrentVersion,如果其值为YES,就删除URL指定的文件的其他版本,并告诉其他版本冲突解决了。


781da1ea9139aeed0a361521067a99d9cc9e5776

此时,文档将发出通知,指出自己恢复到了正常状态。方法documentStateChangedmethod收到这个通知后,让用户能够继续编辑文档(这在8.4.2节介绍过)。

原文链接:https://yq.aliyun.com/articles/96124
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章