基于iOS响应链的数据获取方法技术

技术编号:39044378 阅读:9 留言:0更新日期:2023-10-10 11:57
本发明专利技术涉及一种基于iOS响应链的数据获取方法,用户交互页面上设有事件触发视图,所述事件触发视图所对应的数据被持有在视图控制器中,所述事件触发视图与所述视图控制器之间间隔有至少一个视图层,所述数据获取方法包括步骤:预先设置数据获取协议,并设定所有的所述视图控制器遵守所述数据获取协议;在用户触发所述事件触发视图时,基于响应链工作机制以所述事件触发视图为响应链的起点找到目标视图控制器;所述事件触发视图利用所述数据获取协议向所述目标视图控制器获取对应的数据信息。本方法解决了传统数据获取方法需要跨层传递数据而导致代码复杂、不易维护和修改等问题。题。题。

【技术实现步骤摘要】
基于iOS响应链的数据获取方法


[0001]本专利技术涉及信息
,特别涉及一种基于iOS响应链的数据获取方法。

技术介绍

[0002]苹果手机软件iOS的开发一般采用MVC(M是模型、V是视图、C是控制器)模式,数据被持有在视图控制器(ViewController)中。当用户触发页面上的事件触发层时,事件所对应的数据需要从视图控制器传递到事件触发层,由于事件触发层与视图控制器之间往往间隔有视图层,当页面层级过深时,事件所对应的数据需要从底层的视图控制器一层层传递到末端的事件触发层,导致了较多的跨层传递,而跨层传递会增加代码的复杂度,主要在于传递过程和数据更新。由于参数的传递需要在多个函数和模块之间进行,因此会使得代码变得更加复杂,不易于维护和修改。此外,当数据更新后,将数据再次同步,需要额外的代码进行维护。而且,在用户数据的获取过程中,还会涉及到公共组件获取外部数据的问题。公共组件是指在多个模块或功能中都会使用到的组件,例如头部导航、底部信息、弹窗等。当公共组件被触发时,将不同的业务参数所对应的数据传入公共组件,无疑会破坏公共组件的封装,造成公共组件与业务的耦合。

技术实现思路

[0003]为了解决上述问题,本专利技术提供了基于iOS响应链的数据获取方法,解决了传统数据获取方法需要跨层传递数据而导致代码复杂、不易维护和修改等问题。
[0004]本专利技术通过如下方案来实现:一种基于iOS响应链的数据获取方法,用户交互页面上设有事件触发视图,所述事件触发视图所对应的数据被持有在视图控制器中,所述事件触发视图与所述视图控制器之间间隔有至少一个视图层,所述数据获取方法包括步骤:
[0005]预先设置数据获取协议,并设定所有的所述视图控制器遵守所述数据获取协议;
[0006]在用户触发所述事件触发视图时,基于响应链工作机制以所述事件触发视图为响应链的起点找到目标视图控制器;
[0007]所述事件触发视图利用所述数据获取协议向所述目标视图控制器获取对应的数据信息。
[0008]本专利技术基于iOS响应链的数据获取方法的进一步改进在于:
[0009]至少有两个所述事件触发视图所对应的数据被持有在同一个所述视图控制器中;
[0010]在预先设置数据获取协议时,对每个所述事件触发视图添加标识以作区分,且使所述数据获取协议包括通过提供所述标识获取对应数据的方法。
[0011]本专利技术基于iOS响应链的数据获取方法的进一步改进在于:
[0012]同一个所述事件触发视图所对应的数据被分为至少两部分且分别被持有在不同的所述视图控制器中;
[0013]在预先设置数据获取协议时,将同一个所述事件触发视图所对应的不同所述视图控制器作为一个分组,并设定所述分组在实现数据获取协议时按照按序主动提供的方式实
现;
[0014]在用户触发所述事件触发视图时,基于响应链工作机制以所述事件触发视图为响应链的起点找到目标分组所处的响应链的下游响应者,根据所述下游响应者确定所述目标分组;
[0015]所述事件触发视图利用所述数据获取协议向所述目标分组获取对应的各视图控制器的数据信息。
[0016]本专利技术基于iOS响应链的数据获取方法的进一步改进在于,在预先设置数据获取协议时,将所有的所述视图控制器中待被获取的数据设置为公共属性。
[0017]本专利技术基于iOS响应链的数据获取方法的进一步改进在于,所述公共属性为可读不可写的属性。
[0018]本专利技术基于iOS响应链的数据获取方法的进一步改进在于,在预先设置数据获取协议时,使所述数据获取协议包括通过提供参数名称以获取所述参数名称所对应的数据的方法。
[0019]本专利技术采用iOS响应链的工作机制和数据获取协议相结合的数据获取方式来代替传统的跨层传递数据的方式,有效地减少了参数的传递过程,避免了因跨层传递数据而导致的代码复杂、不易维护和修改等问题。进一步通过数据获取协议的适应性约定,解决了公共组件与业务耦合的问题,降低了对业务和组件的入侵,进一步降低了代码的复杂度,减少了维护成本。
附图说明
[0020]图1示出了核对订单页示意图。
[0021]图2示出了核对订单页的页面结构示意图。
[0022]图3示出了传统的数据传递路径示意图。
[0023]图4示出了传统的组件数据传递路径示意图。
[0024]图5示出了本专利技术基于iOS响应链的数据获取方法的流程示意图。
[0025]图6示出了核对订单页面的响应链示意图。
[0026]图7示出了本专利技术基于响应链获取目标控制器对应数据的示意图。
[0027]图8示出了本专利技术通过数据获取协议解耦的示意图。
具体实施方式
[0028]苹果手机软件iOS的开发一般采用MVC(M是模型、V是视图、C是控制器)模式,数据被持有在视图控制器(View Controller)中。当用户触发页面上的事件触发层时,事件所对应的数据需要从视图控制器传递到事件触发层,当页面层级过深时,会导致跨层传递。
[0029]具体来说,如图1所示,图1描述了一个简单的核对订单页,页面中包含了商品区域模块(用来展示商品信息等)、赠品模块(用来展示赠品列表和选中赠品等)、价格区域模块。业务中包含一个选择赠品的埋点,埋点的同时需要带上订单id。该核对订单页的页面结构如图2所示,页面包含了一个视图控制器(ViewController),该视图控制器持有了列表视图(TableView),该列表视图包含赠品区域(GiftCell)等,该赠品区域包含赠品标题栏和赠品列表(GiftListView),该赠品列表有多个赠品视图(GiftProductView),其中,该视图控制
器持有了订单码(orderId),该赠品视图为终端视图。当选中一个赠品时,将触发获取该赠品视图所对应的数据的事件。传统的数据传递路径如图3所示,从图中可以明显看出,数据从视图控制器传递到赠品视图需要经过中间的其他视图层(包括赠品区域和赠品列表)。而跨层传递会增加代码的复杂度,不易于维护和修改。此外,在用户数据的获取过程中,还会涉及到公共组件获取外部数据的问题,当公共组件被触发时,将不同的业务参数所对应的数据传入公共组件,无疑会破坏公共组件的封装,造成公共组件与业务的耦合。具体如图4所示,赠品区域(Gift Cell)既被核对订单页使用也被商品详情页使用,其复用性比较高,被做成了公共组件,当商品详情页复用时,商品详情页的埋点需要商品码(product Id)作为参数,那么在路径中还需要额外的传递商品码。
[0030]为了解决上述问题,本专利技术提供了一种基于iOS响应链的数据获取方法。下面以具体实施例结合附图对该基于iOS响应链的数据获取方法作进一步说明。
[0031]参阅图5所示,一种基于iOS响应链的数据获取方法,用户交互页面上设有事件触发视图,该事件触发视图所对应的数据被持有在视图控制器中,该事件触发视图与该视图控制器之间间隔有至少一个视本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于iOS响应链的数据获取方法,用户交互页面上设有事件触发视图,所述事件触发视图所对应的数据被持有在视图控制器中,所述事件触发视图与所述视图控制器之间间隔有至少一个视图层,其特征在于,所述数据获取方法包括步骤:预先设置数据获取协议,并设定所有的所述视图控制器遵守所述数据获取协议;在用户触发所述事件触发视图时,基于响应链工作机制以所述事件触发视图为响应链的起点找到目标视图控制器;所述事件触发视图利用所述数据获取协议向所述目标视图控制器获取对应的数据信息。2.如权利要求1所述的基于iOS响应链的数据获取方法,其特征在于:至少有两个所述事件触发视图所对应的数据被持有在同一个所述视图控制器中;在预先设置数据获取协议时,对每个所述事件触发视图添加标识以作区分,且使所述数据获取协议包括通过提供所述标识获取对应数据的方法。3.如权利要求1所述的基于iOS响应链的数据获取方法,其特征在于:同一个所述事件触发视图所对应的数据被分为至少两部分且分别...

【专利技术属性】
技术研发人员:凌永剑
申请(专利权)人:上海非码网络科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1