本公开的实施方式涉及数据处理,更具体地,本公开的实施方式涉及一种参数获取方法、装置、介质和计算设备。
背景技术:
1、在ios应用开发过程中,页面间的参数传递是最为常见的场景之一,常规的技术方案是在各个页面中声明所需参数的属性,并在跳转时,初始化各个页面实例后并对属性进行赋值,达到参数传递的目的,如控制器a页面通过导航控制器跳转到控制器b页面时,需要把控制器a中的若干个属性传递到控制器b中,控制器b就需要声明与控制器a中相同的一系列属性,并在控制器b初始化后,将控制器a中属性的值赋值给控制器b。而后续的交互逻辑中,控制器b可能存在继续跳转到控制器c,并传递相同参数的场景,以此类推,当需求的业务逻辑导致视图栈层级较深时,会存在大量相同属性的声明和赋值过程。
2、为了实现参数传递的目的需要开发人员为每个控制器预先声明属性以及要传递的参数,对于开发人员来说工作量很大,影响开发效率。
技术实现思路
1、本公开提供一种参数获取方法、装置、介质和计算设备,不存在大量相同属性的声明和赋值过程,直接从导航控制器中获取相关参数,在页面跳转过程中,能够实现控制器之间参数的隐式传递。
2、在本公开实施方式的第一方面中,提供了一种方法,包括:响应视图栈发生变化,检测视图栈发生变化之前的第一视图控制器和变化之后的第二视图控制器是否归属同一导航控制器;
3、若视图栈发生变化之前的第一视图控制器和变化之后的第二视图控制器归属同一导航控制器,则控制所述第二视图控制器基于遵循的协议,从所述导航控制器中的参数中,获取与所述第二视图控制器匹配的第一参数,所述导航控制器中的参数表征归属同一导航控制器中的各视图控制器,通过调用遵循的协议中各自声明的方法获取的返回值。
4、在本公开的一个实施例中,还包括:
5、若视图栈发生变化之前的第一视图控制器和变化之后的第二视图控制器不归属同一导航控制器,则控制所述第二视图控制器从所述第一视图控制器中的参数中,获取与所述第二视图控制器匹配的第二参数,所述第一视图控制器中的参数表征所述第一视图控制器通过调用遵循的协议中声明的方法获取的返回值。
6、在本公开的另一实施例中,所述协议包括:参数注入协议和参数传递协议;还包括:
7、若视图栈发生变化之前的第一视图控制器和变化之后的第二视图控制器归属同一导航控制器,在所述第二视图控制器遵循所述参数注入协议的情况下,控制所述第二视图控制器通过调用所述参数传递协议中声明的方法,获取对应的返回值并保存,并将该返回值提供给所述导航控制器;
8、在所述第二视图控制器遵循所述参数传递协议的情况下,执行所述控制所述第二视图控制器基于遵循的协议,从所述导航控制器中的参数中,获取与所述第二视图控制器匹配的第一参数的步骤。
9、在本公开的又一个实施例中,还包括:
10、若视图栈发生变化之前的第一视图控制器和变化之后的第二视图控制器归属同一导航控制器,在所述第二视图控制器不遵循所述参数注入协议只遵循所述参数传递协议的请况下,执行所述控制所述第二视图控制器基于遵循的协议,从所述导航控制器中的参数中,获取与所述第二视图控制器匹配的第一参数的步骤。
11、在本公开的又一个实施例中,所述控制所述第二视图控制器基于遵循的协议,从所述导航控制器中的参数中,获取与所述第二视图控制器匹配的第一参数,包括:
12、若所述第二视图控制器预先配置转移模型类方法,则控制所述第二视图控制器通过调用所述转移模型类方法确定所需参数类型,从所述导航控制器中的参数中获取与所需类型对应的参数,所述对应的参数为所述匹配的第一参数;
13、若所述第二视图控制器未配置转移模型类方法,则从所述导航控制器中的参数中获取各视图控制器提供的参数,该参数为所述匹配的第一参数。
14、在本公开的又一个实施例中,还包括:
15、若视图栈发生变化之前的第一视图控制器和变化之后的第二视图控制器不归属同一导航控制器,且所述第一视图控制器和所述第二视图控制器均遵循所述协议,则执行所述控制所述第二视图控制器从所述第一视图控制器中的参数中,获取与所述第二视图控制器匹配的第二参数的步骤。
16、在本公开的又一个实施例中,所述控制所述第二视图控制器从所述第一视图控制器中的参数中,获取与所述第二视图控制器匹配的第二参数,包括:
17、若所述第二视图控制器预先配置转移模型类方法,则通过调用所述转移模型类方法确定所需参数类型,从所述第一视图控制器中获取与所需类型对应的参数,所述对应的参数为所述匹配的第二参数;
18、若第二视图控制器未配置转移模型类方法,则控制所述第二视图控制器从所述第一视图控制器的参数中获取参数,该参数为所述匹配的第二参数。
19、在本公开的又一个实施例中,所述协议包括参数注入协议和参数传递:还包括:
20、若视图栈发生变化之前的第一视图控制器遵循参数注入协议,且视图栈发生变化之后的第二视图控制器遵循参数传递协议,则确定视图栈发生变化之前的第一视图控制器和变化之后的第二视图控制器均遵循所述协议。
21、在本公开实施方式的第二方面中,提供了一种装置,包括:。
22、第一处理单元,用于响应视图栈发生变化,检测视图栈发生变化之前的第一视图控制器和变化之后的第二视图控制器是否归属同一导航控制器;
23、第二处理单元,用于若视图栈发生变化之前的第一视图控制器和变化之后的第二视图控制器归属同一导航控制器,则控制所述第二视图控制器基于遵循的协议,从所述导航控制器中的参数中,获取与所述第二视图控制器匹配的第一参数,所述导航控制器中的参数表征归属同一导航控制器中的各视图控制器,通过调用遵循的协议中各自声明的方法获取的返回值。
24、在本公开实施方式的第三方面中,提供了一种介质,包括:计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上第一方面和/或第一方面各种可能的实施方式。
25、在本公开实施方式的第四方面中,提供了一种计算设备,包括:处理器,以及与处理器通信连接的存储器;
26、存储器存储计算机执行指令;
27、处理器执行存储器存储的计算机执行指令,以实现如本公开上第一方面和/或第一方面各种可能的实施方式。
28、在本公开实施方式的第五方面中,提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上第一方面和/或第一方面各种可能的实施方式。
29、根据本公开提供的参数获取方法、装置、介质和计算设备,响应视图栈发生变化,检测视图栈发生变化之前的第一视图控制器和变化之后的第二视图控制器是否归属同一导航控制器,若第一视图控制器和第二控制器归属同一个导航控制器,控制第二视图控制器基于遵循的协议,从导航控制器中获取匹配的第一参数,而导航控制器中的参数是归属该导航控制器的各视图控制器通过调用遵循的协议中各自声明的方法获取的返回值,通过本公开的方法,相比现有技术,不存在大量相同属性的声明和赋值过程,直接从导航控制器中获取相关参数,在页面跳转过程中,能够实现控制器之间参数的隐式传递。
1.一种参数获取方法,包括:
2.根据权利要求1所述的方法,还包括:
3.根据权利要求1所述的方法,所述协议包括:参数注入协议和参数传递协议;还包括:
4.根据权利要求3所述的方法,还包括:
5.根据权利要求1至4任一项所述的方法,所述控制所述第二视图控制器基于遵循的协议,从所述导航控制器中的参数中,获取与所述第二视图控制器匹配的第一参数,包括:
6.根据权利要求2所述的方法,还包括:
7.根据权利要求2或6所述的方法,所述控制所述第二视图控制器从所述第一视图控制器中的参数中,获取与所述第二视图控制器匹配的第二参数,包括:
8.一种参数获取装置,包括:
9.一种介质,包括:计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至7任一项所述的方法。
10.一种计算设备,包括:
