首页> 中国专利> 基于iOS的属性声明代码的自动生成方法及装置

基于iOS的属性声明代码的自动生成方法及装置

摘要

本发明提供一种基于iOS的属性声明代码的自动生成方法及装置,涉及程序研发领域、移动互联网技术领域和金融领域。其中,该自动生成方法包括:获取待转换数据并解析,得到对应的数据对象文件;若所述数据对象通过合法性校验,根据所述数据对象文件中的变量以及预设的属性声明代码语法模板进行数据转译,得到所述数据对象文件对应的属性声明代码。本申请实现多种格式的数据对象自动生成属性声明代码文件的过程,无需开发人员重复工作,避免产生额外工作量而造成人力资源的浪费;同时,本申请的应用有助于降低属性声明代码的出错率。

著录项

  • 公开/公告号CN114675833A

    专利类型发明专利

  • 公开/公告日2022-06-28

    原文格式PDF

  • 申请/专利权人 中国工商银行股份有限公司;

    申请/专利号CN202210299701.4

  • 发明设计人 郭斌;石忠德;杨鑫;李求知;

    申请日2022-03-25

  • 分类号G06F8/41;

  • 代理机构北京三友知识产权代理有限公司;

  • 代理人崔博;董骁毅

  • 地址 100140 北京市西城区复兴门内大街55号

  • 入库时间 2023-06-19 15:47:50

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-06-28

    公开

    发明专利申请公布

说明书

技术领域

本申请涉及程序研发领域、移动互联网技术领域和金融领域,具体涉及一种基于iOS的属性声明代码的自动生成方法及装置。

背景技术

随着iOS研发模式的升级,越来越多的工程采用MVC、MVVM架构。其中Model层负责序列化数据对象,需将数据对象中的Key值声明在Model中。因此在iOS工程研发过程中,开发者面临着需要根据数据接口文档在Model层写很多Property的声明代码。因此开发者在开发Model层代码的时候,会面临以下问题:

1)在开发过程中,开发者需要对照后台接口文档编写Property声明代码,在对照编写代码过程很容易出现命名或声明类型等错误,进而导致代码编译运行时存在潜在出错风险。

2)一个数据Model往往包含几十个Property,例如@property(nonatomic,strong)NSArray*names;重复编写费时费力。

由此可见,代码量大、代码重复性高以及编写依赖人工易出错等问题严重影响了开发效率。

发明内容

为了提高属性声明代码的编写效率,第一方面,本申请提供一种基于iOS的属性声明代码的自动生成方法,涉及程序研发领域、移动互联网技术领域和金融领域,该自动生成方法包括:

获取待转换数据并解析,得到对应的数据对象文件;

若所述数据对象文件通过合法性校验,根据所述数据对象文件中的变量以及预设的属性声明代码语法模板进行数据转译,得到所述数据对象文件对应的属性声明代码;其中所述属性声明代码语法模板用以限定所述属性声明代码的语法。

在一实施例中,所述待转换数据中包括递归符号、多个字段、字段标签及标签类型;

所述获取待转换数据并解析,得到对应的数据对象文件,包括:

根据所述递归符号确定待转换数据中各字段的层级;

根据所述字段标签确定各字段的字段名;以及

根据所述字段标签的类型确定各字段的字段类型;

根据所述层级、所述字段名、所述字段类型以及预设的文件格式生成数据对象文件。

在一实施例中,所述预设的文件格式为protp文件格式。

在一实施例中,若所述数据对象文件未通过合法性校验,还包括:

展示所述数据对象文件并生成提示信息,以提示开发者对所述待转换数据或所述数据对象文件进行更改。

在一实施例中,所述根据所述数据对象中的变量以及预设的属性声明代码语法模板进行数据转译,得到所述数据对象文件对应的属性声明代码,包括:

读取所述数据对象文件中的各变量的变量层级和变量类型字段,得到多个变量;

将所述多个变量按照原子性、可读性、拷贝类型、变量类型、字段名顺序嵌入所述属性声明代码语法模板中,得到所述数据对象文件对应的属性声明代码。

在一实施例中,所述基于iOS的属性声明代码的自动生成方法还包括:

根据所述属性声明代码生成代码文件并导出至预设目录。

在一实施例中,所述根据所述属性声明代码生成代码文件并导出至预设目录,包括:

根据所述属性声明代码中的各成员变量声明和方法属性声明生成.h文件;

根据所述属性声明代码中的各变量的赋值和方法实现生成.m文件;

将所述.h文件以及所述.m文件导出至所述预设目录。

第二方面,本申请还提供一种基于iOS的属性声明代码的自动生成装置,包括:

数据解析模块,用于获取待转换数据并解析,得到对应的数据对象文件;

数据转译模块,用于当合法性校验通过时,根据所述数据对象文件中的变量以及预设的属性声明代码语法模板进行数据转译,得到所述数据对象文件对应的属性声明代码。

在一实施例中,所述待转换数据中包括递归符号、多个字段、字段标签及标签类型;

所述数据解析模块包括:

层级解析单元,用于根据所述递归符号确定待转换数据中各字段的层级;

字段名解析单元,用于根据所述字段标签确定各字段的字段名;以及

字段类型解析单元,用于根据所述字段标签的类型确定各字段的字段类型;

数据对象文件生成单元,用于根据所述层级、所述字段名、所述字段类型以及预设的文件格式生成数据对象文件。

在一实施例中,所述基于iOS的属性声明代码的自动生成装置还包括:

展示与提示模块,用于若所述数据对象未通过合法性校验,展示所述数据对象并生成提示信息,以提示开发者对所述待转换数据或所述数据对象进行更改。

在一实施例中,所述数据转译模块包括:

变量获取单元,用于读取所述数据对象文件中的各变量的变量层级和变量类型字段,得到多个变量;

属性声明代码生成单元,用于将所述多个变量按照原子性、可读性、拷贝类型、变量类型、字段名顺序嵌入所述语法模板中,得到所述数据对象文件对应的属性声明代码。

在一实施例中,所述基于iOS的属性声明代码的自动生成装置还包括:

代码文件导出模块,用于根据所述属性声明代码生成代码文件并导出至预设目录。

在一实施例中,所述代码文件导出模块包括:

.h文件生成单元,用于根据所述属性声明代码中的各成员变量声明和方法属性声明生成.h文件;

.m文件生成单元,用于根据所述属性声明代码中的各变量的赋值和方法实现生成.m文件;

导出单元,用于将所述.h文件以及所述.m文件导出至所述预设目录。

第三方面,本申请还提供一种电子设备,包括:

中央处理器、存储器、通信模块,所述存储器中存储有计算机程序,所述中央处理器可调用所述计算机程序,所述中央处理器执行所述计算机程序时实现本申请提供的任一基于iOS的属性声明代码的自动生成方法。

第四方面,本申请还提供一种计算机可读存储介质,用于存储计算机程序,所述计算机程序被处理器执行时实现本申请提供的任一基于iOS的属性声明代码的自动生成方法。

本申请的基于iOS的属性声明代码的自动生成方法及装置,可在macOS平台上实现json、xml等格式的数据对象自动生成属性声明代码文件的过程,无需开发人员重复工作,避免产生额外工作量,造成人力资源的浪费;同时,本申请的应用显著提高了属性声明代码的正确性,降低了出错率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请提供的基于iOS的属性声明代码的自动生成方法的一种示意图。

图2为本申请提供的基于iOS的属性声明代码的自动生成方法的另一种示意图。

图3为本申请提供的基于iOS的属性声明代码的自动生成方法的另一种示意图。

图4为本申请提供的基于iOS的属性声明代码的自动生成方法的另一种示意图。

图5为本申请提供的基于iOS的属性声明代码的自动生成方法的另一种示意图。

图6为本申请提供的基于iOS的属性声明代码的自动生成方法的另一种示意图。

图7为本申请提供的展示与编辑界面的一种示意图。

图8为本申请提供的基于iOS的属性声明代码的自动生成装置的一种示意图。

图9为本申请提供的基于iOS的属性声明代码的自动生成装置的另一种示意图。

图10为本申请提供的基于iOS的属性声明代码的自动生成装置的另一种示意图。

图11为本申请提供的基于iOS的属性声明代码的自动生成装置的另一种示意图。

图12为本申请提供的基于iOS的属性声明代码的自动生成装置的另一种示意图。

图13为本申请提供的基于iOS的属性声明代码的自动生成装置的另一种示意图。

图14为本申请提供的电子设备的一种示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了提高属性声明代码的编写效率,第一方面,本申请提供一种基于iOS的属性声明代码的自动生成方法,涉及程序研发领域和金融领域,如图1所示,该基于iOS的属性声明代码的自动生成方法包括以下步骤:

步骤S101,获取待转换数据并解析,得到对应的数据对象文件;

具体地,待转换数据可以为开发人员导入的文件或字符串,其格式例如可以是json、xml等。对待转换数据进行解析时,获取其中包含的层级和字段相关信息,生成数据对象文件。

获取到的待转换数据和解析得到的数据对象文件均可通过一展示与编辑界面进行展示,方便开发人员对进行预览和编辑,例如对文件名、声明类型及属性关键词等进行修改。

实际上,在对待转换数据进行解析得到数据对象文件的同时,会使用对应格式的解析框架对数据对象文件合法性校验,验证其是否符合数据规范。当符合时,可继续执行步骤S102。

步骤S102,若所述数据对象文件通过合法性校验,根据所述数据对象文件中的变量以及预设的属性声明代码语法模板进行数据转译,得到所述数据对象文件对应的属性声明代码。

其中,属性声明代码语法模板由开发人员预先定义并存储的,属性声明代码语法模板为可编辑的代码文本,使用时,根据操作指令调用即可。数据转译时,读取识别数据对象文件中的各变量,然后将各变量按照调用的属性声明代码语法模板的规则进行嵌入,即可得到对应的属性声明代码。

在一实施例中,如图2所示,还包括:

步骤S103,若所述数据对象文件未通过合法性校验,展示所述数据对象文件并生成提示信息,以提示开发者对所述待转换数据或所述数据对象文件进行更改。

其中,可通过前述展示与编辑界面展示未通过数据对象文件内容。当所述数据对象文件未通过合法性校验时,通过该展示与编辑界面展示不符合规范的数据对象文件内容,并向开发人员发出提示信息,提醒开发人员对数据对象文件进行修改或重新导入待转换数据以重新生成数据对象文件。

在一实施例中,所述待转换数据中包括递归符号、多个字段、字段标签及标签类型;

相应地,请参见图3,步骤S101,所述获取待转换数据并解析,得到对应的数据对象文件,具体包括以下步骤:

步骤S1011,根据所述递归符号确定待转换数据中各字段的层级;

步骤S1012,根据所述字段标签确定各字段的字段名;以及

步骤S1013,根据所述字段标签的类型确定各字段的字段类型;

步骤S1014,根据所述层级、所述字段名、所述字段类型以及预设的文件格式生成数据对象文件。

例如,若待转换数据为json格式,其解析步骤具体为:首先递归“{}”符号获取各个字段的层级,其次通过获取字段标签key-value确定字段名,再根据标签value的类型(数字、字符串)确定字段类型(Integer、NSString等)。

若待转换数据为xml格式,其解析步骤具体为:先递归“<>与”符号获取各个字段的层级,其次通过获取字段标签确定字段名,再根据标签中包含值的类型(数字、字符串)确定字段类型(Integer、NSString等)。

在一个具体的例子中,将json/xml数据解析成对象字典,模型类型包括NSArray,NSDictionary,NSString。如名为Person的json对象{“names”:["张三","李四"]}通过数据解析单元解析后,将会生成对象模型:

NSDictionary:Person

KEY:

NSString:”names";

Value:

NSArray:["张三",“李四"];

以上提及的json、xml格式均为互联网常用文件格式,除此之外,为了更快速的解析文件,更精准地生成属性声明代码,本实施例还提供独有的文件格式解析,即protp格式。protp类型的文件内容包含:层级、原子性、可读性、拷贝类型、变量类型、字段名。其中,原子性字段可以包含原子(automatic)和非原子(nonautomic)两种选项,可读性包含只读(readonly)、只写(writeonly)、读写(readwrite)三种选项,拷贝类型支持深拷贝(mutablecopy)和浅拷贝(copy)两种选项。变量类型不仅支持传统常见的类型包括数组(NSArray),字典(NSDictionary),字符串(NSString),而且支持函数指针,block。变量类型可以与拷贝类型根据iOS语法特性进行联动,如NSString默认对应copy。因此在本申请中,protp类型的文件既可以作为输入文件(例如本申请的待转换数据),同时还可以是本申请解析数据的中间文件(例如本申请的数据对象文件)。

json和xml两种类型的文件的时间复杂度为O(n!),且最终解析后生成的中间文件类型为protp。protp类型的文件解析与前两种相比较,解析更加快速,作为本申请中生成的中间文件无需额外处理。通过层级标签直接可以获取字段的层级,无需递归获取,时间复杂度为O(n)。同时根据其他字段可以直接更加准确的确认变量类型、变量名以及正确的关键字。

在一实施例中,如图4所示,步骤S102,根据所述数据对象中的变量以及预设的属性声明代码语法模板进行数据转译,得到所述数据对象文件对应的属性声明代码,具体包括以下步骤:

步骤S1021,读取所述数据对象文件中的各变量的变量层级和变量类型字段,得到多个变量。

具体地,假设解析后生成了protp类型的数据对象文件,首先读取数据对象文件中的所有变量层级和变量类型字段,生成各层级所属Class代码,并继承类包括NSArray,NSDictionary,NSObject。由此可得到多个层级和类名变量。

步骤S1022,将所述多个变量按照原子性、可读性、拷贝类型、变量类型、字段名顺序嵌入所述属性声明变量语法模板中,得到所述数据对象文件对应的属性声明代码。

具体地,将步骤S1021中得到的层级和类名等变量,按照原子性、可读性、拷贝类型、变量类型、字段名顺序嵌入属性声明变量语法模板中,得到对应的属性声明代码。其中,本申请采用的属性声明变量语法模板为Objectivc-C语法模板,用以限定所述属性声明代码的语法,其样式如下:

@property space(<原子性>,<可读性>,<拷贝类型>)space<变量类型>*<字段名>;

本申请的Objectivc-C语法模板根据语法定制,为本申请独有,不同于现有技术中的其他语法模板。

在一实施例中,如图5所示,所述基于iOS的属性声明代码的自动生成方法还包括:

步骤S103,根据所述属性声明代码生成代码文件并导出至预设目录。

生成的属性声明代码可以在前述展示与编辑界面中展示,供开发人员预览和编辑,开发人员可通过展示与编辑界面对已生成的属性声明代码中属性的名称、类型、关键字以及属性声明代码的文件名进行编辑。同时,编辑完成后,还可将属性声明代码导出至预设目录,作为单独的代码文件存储和调用。

在一实施例中,如图6所示,步骤S103,根据所述属性声明代码生成代码文件并导出至预设目录,包括:

步骤S1031,根据所述属性声明代码中的各成员变量声明和方法属性声明生成.h文件;

步骤S1032,根据所述属性声明代码中的各变量的赋值和方法实现生成.m文件;

步骤S1033,将所述.h文件以及所述.m文件导出至所述预设目录。

与.java文件、.class文件将声明与实现放在一起不同,本申请.h文件与.m文件配套使用,分别将声明和实现存放至.h、.m文件中。.h文件存放各成员变量声明以及方法属性声明,而.m文件存放变量的赋值与方法实现。代码如下:

Person.h

@interface Person:NSObject

@property(nonatomic,strong)NSArray*names;

@end

Person.m

@implementation WHC

@end

实际应用中,.h文件与.m文件也可在前述展示与编辑界面中展示,供开发人员预览。图7为本申请提供的一种展示与编辑界面的示意图,该界面中包括用以提供待转换数据、数据文件对象的预览和编辑功能的数据文件预览编辑窗口,供开发人员导入待转换数据的导入按键和校验按键,分别展示.h文件和.m文件的预览编辑窗口以及文件导出按键。

本申请的基于iOS的属性声明代码的自动生成方法,可在macOS平台上实现json、xml等格式的数据对象自动生成属性声明代码文件的过程,无需开发人员重复工作,避免产生额外工作量,造成人力资源的浪费;同时,本申请的应用显著提高了属性声明代码的正确性,降低了出错率。

基于同一发明构思,本申请实施例还提供了一种基于iOS的属性声明代码的自动生成装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于基于iOS的属性声明代码的自动生成装置解决问题的原理与基于iOS的属性声明代码的自动生成方法相似,因此基于iOS的属性声明代码的自动生成装置的实施可以参见基于iOS的属性声明代码的自动生成方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

第二方面,本申请还提供一种基于iOS的属性声明代码的自动生成装置,如图8所示,该装置包括:

数据解析模块701,用于获取待转换数据并解析,得到对应的数据对象文件;

数据转译模块702,用于当合法性校验通过时,根据所述数据对象文件中的变量以及预设的属性声明代码语法模板进行数据转译,得到所述数据对象文件对应的属性声明代码。

在一实施例中,所述待转换数据中包括递归符号、多个字段、字段标签及标签类型;

参见图9,所述数据解析模块701包括:

层级解析单元7011,用于根据所述递归符号确定待转换数据中各字段的层级;

字段名解析单元7012,用于根据所述字段标签确定各字段的字段名;以及

字段类型解析单元7013,用于根据所述字段标签的类型确定各字段的字段类型;

数据对象文件生成单元7014,用于根据所述层级、所述字段名、所述字段类型以及预设的文件格式生成数据对象文件。

在一实施例中,如图10所示,所述基于iOS的属性声明代码的自动生成装置还包括:

展示与提示模块703,用于若所述数据对象未通过合法性校验,展示所述数据对象并生成提示信息,以提示开发者对所述待转换数据或所述数据对象进行更改。

在一实施例中,如图11所示,所述数据转译模块702包括:

变量获取单元7021,用于读取所述数据对象文件中的各变量的变量层级和变量类型字段,得到多个变量;

属性声明代码生成单元7022,用于将所述多个变量按照原子性、可读性、拷贝类型、变量类型、字段名顺序嵌入所述语法模板中,得到所述数据对象文件对应的属性声明代码。

在一实施例中,如图12所示,所述基于iOS的属性声明代码的自动生成装置还包括:

代码文件导出模块704,用于根据所述属性声明代码生成代码文件并导出至预设目录。

在一实施例中,如图13所示,所述代码文件导出模块704包括:

.h文件生成单元7041,用于根据所述属性声明代码中的各成员变量声明和方法属性声明生成.h文件;

.m文件生成单元7042,用于根据所述属性声明代码中的各变量的赋值和方法实现生成.m文件;

导出单元7043,用于将所述.h文件以及所述.m文件导出至所述预设目录。

第三方面,本发明还提供一种电子设备,参见图14,所述电子设备100具体包括:

中央处理器(processor)110、存储器(memory)120、通信模块(Communications)130、输入单元140、输出单元150以及电源160。

其中,所述存储器(memory)120、通信模块(Communications)130、输入单元140、输出单元150以及电源160分别与所述中央处理器(processor)110相连接。所述存储器120中存储有计算机程序,所述中央处理器110可调用所述计算机程序,所述中央处理器110执行所述计算机程序时实现上述实施例中的基于iOS的属性声明代码的自动生成方法中的全部步骤。

第四方面,本申请的实施例还提供一种计算机可读存储介质,用于存储计算机程序,所述计算机程序可被处理器执行。所述计算机程序被处理器执行时实现本发明所提供的任一基于iOS的属性声明代码的自动生成方法。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。

在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。以上所述仅为本说明书实施例的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号