数据管理方法及装置与流程

文档序号:12664771阅读:186来源:国知局
数据管理方法及装置与流程

本发明涉及计算机技术领域,更具体地,涉及一种数据管理方法及装置。



背景技术:

随着互联网的深入发展,观看视频直播的用户越来越多。其中,直播页面是一个直播app最复杂且最核心的页面,这个页面包含许多功能,比如弹幕、聊天、发送礼物、接收礼物、充值、屏蔽用户、举报用户、观看直播、设置播放器亮度、调节播放器声音及屏幕的旋转方向等等超过30种不同的功能。这么多功能写在一个UIViewController(界面控制器,苹果开发语言中存放代码的主要容器)里面,随着版本地迭代及未来对直播页面进行功能扩充,这个容器里面的代码会上万行甚至几万行。一个上万行代码的控制器是不便于开发人员继续维护开发的,也不利于在这个版本上面继续扩充功能。

其中,在一个上万行代码的UIViewController里包含有大量的宏定义、常量、枚举、头文件、分类头文件及属性等。如果这些数据都放在控制器里面,会在一定的程度上造成控制器的代码冗余。另外,当其它页面需要调用这些数据时,也会非常不方便。因此,在工程项目角度上急需一种数据管理方法。



技术实现要素:

本发明提供一种克服上述问题或者至少部分地解决上述问题的数据管理方法及装置。

根据本发明的一方面,提供了一种数据管理方法,该方法包括:

基于目标工程项目下数据的类型,生成相应的头文件,目标工程项目为应用开发工程项目;

当检测到任一数据的调用指令时,在目标工程项目中导入任一数据相应的头文件。

根据本发明的另一方面,提供了一种数据管理装置,该装置包括:

第一生成模块,用于基于目标工程项目下数据的类型,生成相应的头文件,目标工程项目为应用开发工程项目;

导入模块,用于当检测到任一数据的调用指令时,在目标工程项目中导入任一数据相应的头文件。

本申请提出的技术方案带来的有益效果是:

通过基于目标工程项目下数据的类型,生成相应的头文件。当检测到任一数据的调用指令时,在目标工程项目中导入任一数据相应的头文件。由于可将预设控制器中不同类型的数据导入到相应的头文件中,从而避免了数据暴露在预设控制器中,提高了数据的安全性。

其次,由于经常需要调用的公有头文件等公有数据放入到相应的预编译头文件,从而后续无需重复导入这些公有数据,只需引用预编译头文件即可,从而提高了后续代码编译时的速度,减少了代码冗余。

附图说明

图1为本发明实施例的一种数据管理方法的流程示意图;

图2为本发明实施例的一种数据管理方法的流程示意图;

图3为本发明实施例的一种数据管理装置的结构示意图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

随着应用页面包含的功能越来越多,若这么多功能写在一个UIViewController(界面控制器,苹果开发语言中存放代码的主要容器)里面,随着版本地迭代及未来对应用页面进行功能扩充,这个容器里面的代码会上万行甚至几万行。一个上万行代码的控制器是不便于开发人员继续维护开发的,也不利于在这个版本上面继续扩充功能。这会造成控制器代码冗余,且当其它页面需要调用这些数据时,也会非常不方便。

另外,由于随着工程项目版本的迭代开发,工程目录下的资源也不断地替换,从而导致若不能及时删除每一版本所遗留下的无用文件,工程目录下的无用文件资源会越积越多。其中,工程项目为应用开发工程项目。例如,iOS项目需要依赖大量的资源图片,项目的开发和迭代会有大量图片资源需要删除,在大型项目中甚至超过2000张图片。这些图片若不能及时删除,累积久了会造成后续项目开发可使用的存储空间不足。因此,需要对无用数据进行删除。

针对现有技术中的问题,本发明实施例提供了一种数据管理方法。基于上述内容,参见图1,本实施例提供的方法流程包括:101、基于目标工程项目下数据的类型,生成相应的头文件;102、当检测到任一数据的调用指令时,在目标工程项目中导入任一数据相应的头文件。

其中,目标工程项目为应用开发工程项目。由于应用开发工程项目通常数量较多,从而可将其中一个需要进行数据管理的应用开发工程项目作为目标应用开发工程项目。

本发明实施例提供的方法,通过基于目标工程项目下数据的类型,生成相应的头文件。当检测到任一数据的调用指令时,在目标工程项目中导入任一数据相应的头文件。由于可将预设控制器中不同类型的数据导入到相应的头文件中,从而避免了数据暴露在预设控制器中,提高了数据的安全性。

其次,由于经常需要调用的公有头文件等公有数据放入到相应的预编译头文件,从而后续无需重复导入这些公有数据,只需引用预编译头文件即可,从而提高了后续代码编译时的速度,减少了代码冗余。

作为一种可选实施例,数据包括预设控制器专有的宏定义、常量或枚举变量,基于目标工程项目下数据的类型,生成相应的头文件之前,包括:

基于创建头文件的第一指令,创建第一头文件;

基于目标工程项目下数据的类型,生成相应的头文件,包括:

将预设控制器专有的宏定义、常量或枚举变量,导入到第一头文件中。

作为一种可选实施例,数据为预设控制器依赖的分类头文件或非分类头文件,基于目标工程项目下数据的类型,生成相应的头文件之前,包括:

基于创建头文件的第二指令,创建第二头文件;

基于创建头文件的第三指令,创建第三头文件;

基于目标工程项目下数据的类型,生成相应的头文件,包括:

将预设控制器依赖的分类头文件中的内容,导入到第二头文件中;

将预设控制器依赖的非分类头文件中的内容,导入到第三头文件中。

作为一种可选实施例,数据为属性值,基于目标工程项目下数据的类型,生成相应的头文件,包括:

确定属性值对应的类;

将属性值导入到类对应的头文件中。

作为一种可选实施例,数据为公有宏定义、公有常量、公有枚举变量或公有头文件,基于目标工程项目下数据的类型,生成相应的头文件,包括:

根据目标工程项目的名称,创建预编译头文件;

将公有宏定义、公有常量、公有枚举变量或公有头文件中的内容导入到预编译头文件中。

作为一种可选实施例,该方法还包括:

查找目标工程目录下指定文件后缀名对应的目标文件,目标工程目录为目标工程项目对应的工程目录;

确定查找结果中目标工程项目代码未引用的目标文件;

删除未引用的目标文件。

作为一种可选实施例,查找目标工程目录下指定文件后缀名对应的目标文件之前,包括:

基于用户输入的命令行命令,定位到当前的操作目录,并将操作目录作为目标工程目录。

作为一种可选实施例,查找目标工程目录下指定文件后缀名对应的目标文件,包括:

基于预设正则表达式,将目标工程目录下文件的文件信息与指定文件后缀名进行匹配,将匹配成功的文件作为目标文件;

根据目标文件对应的文件信息生成文件信息列表,并作为查找结果。

作为一种可选实施例,确定查找结果中目标工程项目代码未引用的目标文件,包括:

对于文件信息列表中任一文件信息对应的任一目标文件,查找目标工程项目代码中是否包含任一文件信息;

当包含任一文件信息时,确定目标工程项目代码引用任一目标文件;

当不包含任一文件信息时,确定目标工程项目代码未引用任一目标文件。

上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。

由于工程项目下许多功能都会写在预设控制器里,如直播下的许多功能代码都会写在UIViewController这个界面控制器里,这会造成大量数据都放在这个预设控制器里,并导致代码冗余,从而需要对工程项目下的数据进行管理。另外,工程项目下通常还有许多没有被工程项目代码引用的无用文件,从而需要对这些文件进行删除。

基于上述内容及图1对应实施例中的内容,本发明实施例提供了一种数据管理方法。参见图2,该方法包括:201、基于目标工程项目下数据的类型,生成相应的头文件;202、当检测到任一数据的调用指令时,在目标工程项目中导入任一数据相应的头文件;203、基于用户输入的命令行命令,定位到当前的操作目录,并将操作目录作为目标工程目录;204、查找目标工程目录下指定文件后缀名对应的目标文件;205、确定查找结果中目标工程项目代码未引用的目标文件;206、删除未引用的目标文件。

其中,201、基于目标工程项目下数据的类型,生成相应的头文件。

在本步骤中,目标工程项目为应用开发工程项目。由于目标工程项目下的数据类型很多,现针对每一类型的数据,对本步骤中生成相应头文件的过程进行阐述。

(1)数据包括预设控制器专有的宏定义、常量或枚举变量。

其中,预设控制器可以为界面控制器UIViewController,本实施例对此不作具体限定。数据可以为上述三种数据的一种或多种,本实施例对此也不作具体限定。

在执行本步骤之前,可基于创建头文件的第一指令,创建第一头文件。具体地,以预设控制器为DYNewPlayer控制器为例。

在苹果开发工具xcode中,点击左上角菜单“File”->“New File”->“Header File”,在出现的界面中点击”Next”,输入文件名“DYNewPlayerConstant.h”就可以创建出一个头文件,即第一头文件。

相应地,可将DYNewPlayer控制器专有的宏定义、常量或枚举变量导入到“DYNewPlayerConstant.h”这个头文件中。

(2)数据为预设控制器依赖的分类头文件或非分类头文件。

在执行本步骤之前,可基于创建头文件的第二指令,创建第二头文件;基于创建头文件的第三指令,创建第三头文件。

具体地,同样可按照上述创建头文件的过程,分别创建两个头文件。创建DYNewPlayerCategor.h这个头文件作为第二头文件,创建DYNewPlayerBaseHeader.h这个头文件作为第三头文件。

其中,可将预设控制器DYNewPlayer所依赖的分类头文件中的内容,导入到DYNewPlayerCategor.h中。将预设控制器DYNewPlayer所依赖的非分类头文件中的内容,导入到DYNewPlayerBaseHeader.h中。

(3)数据为属性值。

一般情况下,属性值均在预设控制器的.m文件中。在本实施例中,基于分类访问的原则,可将属性值放到类的.h文件中,以便于后续分类调用这些属性值。

相应地,可先确定属性值对应的类,再将属性值导入到类对应的头文件中。

(4)数据为公有宏定义、公有常量、公有枚举变量或公有头文件。

其中,数据可以为上述四种数据的一种或多种,本实施例对此不作具体限定。

公有头文件通常数量较多,通常工程项目中许多控制器都需要调用公有头文件。例如,对于公有头文件UserDefaults.h,50%以上的控制器需要导入这个头文件。如果每个控制器都导入所有需要调用的公有头文件,这会造成极大的代码冗余。对于这种情况,可根据目标工程项目的名称,创建预编译头文件,即pch文件。将公有头文件放入到创建的pch文件中。

具体地,可打开工程项目的xcode工程文件。点击找到项目工程的Supporting Files目录,在这个目录下创建pch文件。选择“File”->New->File->iOS->other,然后点击下一步。

点击下一步之后可输入一个名称,如果工程项目的名称是DYLive,那么pch文件的名称可以为DYLive-Prefix.pch。确定pch文件的名称后,可点击创建按钮创建pch文件。

点击xcode中的工程Project,选择Build Settings,然后在xcode的搜索界面搜索Prefix Header。

在xcode里面找到Apple LLVM 6.0,找到这个栏目后可看到Prefix Header的关键字,在这里点击输入$(SRCROOT)/YourProject-Prefix.pch。

点击输入完成后,可在Precompile Prefix Header对应的选项上选择YES。经过上述处理后,预编译后的PCH文件可被缓存,从而可以大大提高编译速度。

pch文件创建和配置完成之后,可Clean整个xcode工程项目,也可以通过快捷键caps+command+k来build整个工程文件。通过上述过程,可完成pch文件的创建和配置。

预编译头文件pch创建和配置完毕后,可将公有宏定义、公有常量、公有枚举变量或公有头文件中的内容导入到预编译头文件中。由于公有头文件的内容已经导入到了pch文件中,从而可删除工程项目中已经导入的公有头文件,本实施例对此不作具体限定。

上述步骤201至步骤202,主要是将不同类型的数据进行分类管理,将不同类型的数据导入到相应的头文件中。由于随着工程项目在开发过程的推进,工程项目的版本也在不断地迭代。相应地,工程项目中的文件资源也不断地被替换。由于工程项目版本更新通常较快,之前版本遗留下的无用文件资源会越积越多,从而为了避免后续产生存储空间不足的问题,需要对无用文件进行删除。

基于上述内容,本实施例的后续步骤基于数据管理中数据删除角度,提出了一种数据删除方法,详见后续步骤中的内容。

其中,203、基于用户输入的命令行命令,定位到当前的操作目录,并将操作目录作为目标工程目录。

在本步骤中,目标工程目录为目标工程项目对应的工程目录。本步骤及后续步骤的实施基础均为通过执行脚本文件来对无用数据进行删除,本步骤及后续步骤主要基于脚本文件对无用数据进行删除的过程进行说明。其中,脚本文件可以为.sh后缀名的shell脚本,本实施例不对脚本文件的类型作具体限定。其中,目标工程目录为脚本文件执行的目录。

由上述内容可知,由于脚本文件需要在指定目录下执行,以删除指定目录下的无用文件,从而在本步骤中可接受用户输入的命令行命令,定位到用户所需的目录,即当前的操作目录。例如,用户可通过输入cd命令不断退出每一级目录,直到工程项目的根目录。此时,工程项目的根目录即为目标工程目录。

其中,204、查找目标工程目录下指定文件后缀名对应的目标文件。

由于需要删除的无用文件通常具有一定共性,如无用文件通常为之前版本遗留下的图像文件,从而无用文件通常为带有图像格式后缀名的文件。在执行本步骤之前,可在脚本文件中指定文件后缀名,如png、jpg或bmp等等。当然,文件后缀名除了图像文件对应的后缀名之外,还可以为xcode中的xib文件后缀名,本实施例不对文件后缀名的类型作具体限定。

本实施例不对查找目标工程目录下指定文件后缀名对应的目标文件的方式作具体限定,包括但不限于:基于预设正则表达式,将目标工程目录下文件的文件信息与指定文件后缀名进行匹配,将匹配成功的文件作为目标文件;根据目标文件对应的文件信息生成文件信息列表,并作为查找结果。其中,文件信息至少包括文件名及文件后缀名,本实施例对此不作具体限定。

在上述查找过程中,并未采用现有技术常用的字符串匹配方式,而是通过正则表达式,将文件信息与文件后缀名进行匹配。由于在通过正则表达式进行匹配时,相较于字符串匹配,底层编译器的编译效率较高,从而提高了文件删除时的效率。

其中,205、确定查找结果中目标工程项目代码未引用的目标文件。

在上述步骤204中,主要是找出工程项目中指定文件后缀名对应的所有文件。这些文件在当前版本的目标工程项目代码中,有的可能会被引用,有的可能没有被引用。其中,没有被引用的文件即为需要被删除的文件。在本步骤中,需要确认目标工程项目代码中哪些文件需要被删除。

基于上述步骤204中的内容,本实施例不对确定查找结果中目标工程项目代码未引用的目标文件的方式作具体限定,包括但不限于:对于文件信息列表中任一文件信息对应的任一目标文件,查找目标工程项目代码中是否包含任一文件信息;当包含任一文件信息时,确定目标工程项目代码引用任一目标文件;当不包含任一文件信息时,确定目标工程项目代码未引用任一目标文件。

例如,以文件后缀名为png为例。在目标工程项目代码中通常会以如下方式来引用某一图像文件,如“a.png”。当引用了某一图像文件时,目标工程项目代码中通常会包含该图像文件的文件名及文件后缀名,即文件信息。相应地,当目标工程项目代码中包含某一文件信息时,则可确定目标工程项目代码中引用了该文件信息对应的文件。反之,则没有引用。

通过本步骤,可确认在目标工程目录下的所有文件中,有哪些文件目标工程项目代码在引用,哪些文件目标工程项目代码没有在引用,从而可得到所有没被引用文件对应的文件信息,以便于后续进行删除。在本步骤中,文件信息还可以包括文件所在的具体目录。

其中,206、删除未引用的目标文件。

由于考虑到用户可能需要查看有哪些文件没被引用,或者需要了解大概有多少文件没被引用,从而在执行本步骤之前,还可以根据未引用目标文件对应的文件信息生成文本文件,显示文本文件中的内容,本实施例对此不作具体限定。通过该过程,能便于用户了解有哪些文件没被引用。上述步骤及本步骤均为脚本文件的具体执行过程,当脚本文件执行完毕时,工程项目代码没有引用的所有无用文件都会被删掉。

上述步骤203至步骤206主要为数据删除的过程,数据删除的过程也属于数据管理中的一环。但需要说明的是,上述步骤203至步骤206中的内容可以先于上述步骤201及步骤202执行。当然,也可以按照本实施例的描述方式,在上述步骤201与步骤202执行完毕后,再执行步骤203至步骤206,本实施例对此不作具体限定。

本发明实施例提供的方法,通过基于目标工程项目下数据的类型,生成相应的头文件。当检测到任一数据的调用指令时,在目标工程项目中导入任一数据相应的头文件。由于可将预设控制器中不同类型的数据导入到相应的头文件中,从而避免了数据暴露在预设控制器中,提高了数据的安全性。

其次,由于经常需要调用的公有头文件等公有数据放入到相应的预编译头文件,从而后续无需重复导入这些公有数据,只需引用预编译头文件即可,从而提高了后续代码编译时的速度,减少了代码冗余。

从次,通过基于用户输入的命令行命令,定位到当前的操作目录,并将操作目录作为目标工程目录。查找目标工程目录下指定文件后缀名对应的目标文件。确定查找结果中目标工程项目代码未引用的目标文件,删除未引用的目标文件。由于可直接基于文件后缀名,确定哪些无用文件没有被引用且需要被删除。因此,文件删除时的准确率较高,效果较好。

另外,由于可通过执行脚本文件的方式,统一删除所有的无用文件,从而提高了文件删除时的效率。

最后,由于在查找指定文件后缀名的文件时,是通过正则表达式进行匹配,相较于字符串匹配,底层编译器的编译效率较高,从而进一步地提高了文件删除时的效率。

本发明实施例提供了一种数据管理装置,该装置用于执行上述图1或图2对应实施例所提供的数据管理方法。参见图3,该装置包括:

第一生成模块301,用于基于目标工程项目下数据的类型,生成相应的头文件,目标工程项目为应用开发工程项目;

导入模块302,用于当检测到任一数据的调用指令时,在目标工程项目中导入任一数据相应的头文件。

作为一种可选实施例,数据包括预设控制器专有的宏定义、常量或枚举变量,该装置还包括:

第一创建模块,用于基于创建头文件的第一指令,创建第一头文件;

该第一生成模块301,用于将预设控制器专有的宏定义、常量或枚举变量,导入到第一头文件中。

作为一种可选实施例,数据为预设控制器依赖的分类头文件或非分类头文件,该装置还包括:

第二创建模块,用于基于创建头文件的第二指令,创建第二头文件;基于创建头文件的第三指令,创建第三头文件;

该第一生成模块301,用于将预设控制器依赖的分类头文件中的内容,导入到第二头文件中;将预设控制器依赖的非分类头文件中的内容,导入到第三头文件中。

作为一种可选实施例,数据为属性值,第一生成模块301,用于确定属性值对应的类;将属性值导入到类对应的头文件中。

作为一种可选实施例,数据为公有宏定义、公有常量、公有枚举变量或公有头文件,第一生成模块301,用于根据目标工程项目的名称,创建预编译头文件;将公有宏定义、公有常量、公有枚举变量或公有头文件中的内容导入到预编译头文件中。

作为一种可选实施例,该装置还包括:

查找模块,用于查找目标工程目录下指定文件后缀名对应的目标文件,目标工程目录为目标工程项目对应的工程目录;

确定模块,用于确定查找结果中目标工程项目代码未引用的目标文件;

删除模块,用于删除未引用的目标文件。

作为一种可选实施例,该装置还包括:

定位模块,用于基于用户输入的命令行命令,定位到当前的操作目录,并将操作目录作为目标工程目录。

作为一种可选实施例,查找模块,用于基于预设正则表达式,将目标工程目录下文件的文件信息与指定文件后缀名进行匹配,将匹配成功的文件作为目标文件;根据目标文件对应的文件信息生成文件信息列表,并作为查找结果。

作为一种可选实施例,确定模块,用于对于文件信息列表中任一文件信息对应的任一目标文件,查找目标工程项目代码中是否包含任一文件信息;当包含任一文件信息时,确定目标工程项目代码引用任一目标文件;当不包含任一文件信息时,确定目标工程项目代码未引用任一目标文件。

作为一种可选实施例,该装置还包括:

第二生成模块,用于根据未引用目标文件对应的文件信息,生成文本文件;

显示模块,用于显示文本文件中的内容。

本发明实施例提供的装置,通过基于目标工程项目下数据的类型,生成相应的头文件。当检测到任一数据的调用指令时,在目标工程项目中导入任一数据相应的头文件。由于可将预设控制器中不同类型的数据导入到相应的头文件中,从而避免了数据暴露在预设控制器中,提高了数据的安全性。

其次,由于经常需要调用的公有头文件等公有数据放入到相应的预编译头文件,从而后续无需重复导入这些公有数据,只需引用预编译头文件即可,从而提高了后续代码编译时的速度,减少了代码冗余。

从次,通过基于用户输入的命令行命令,定位到当前的操作目录,并将操作目录作为目标工程目录。查找目标工程目录下指定文件后缀名对应的目标文件。确定查找结果中目标工程项目代码未引用的目标文件,删除未引用的目标文件。由于可直接基于文件后缀名,确定哪些无用文件没有被引用且需要被删除。因此,文件删除时的准确率较高,效果较好。

另外,由于可通过执行脚本文件的方式,统一删除所有的无用文件,从而提高了文件删除时的效率。

最后,由于在查找指定文件后缀名的文件时,是通过正则表达式进行匹配,相较于字符串匹配,底层编译器的编译效率较高,从而进一步地提高了文件删除时的效率。

最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1