掌桥专利:专业的专利平台
掌桥专利
首页

数据处理方法、装置和电子设备

文献发布时间:2023-06-19 12:19:35


数据处理方法、装置和电子设备

技术领域

本发明涉及软件开发技术领域,尤其是涉及一种数据处理方法、装置和电子设备。

背景技术

苹果系统中通常主要使用NSUserDefaults来存储用户设置、系统配置等比较轻量级的数据,该数据是以键值对key-value的形式保存在沙盒中。但是NSUserDefaults通常在使用时需要开发人员自定义常量字符串key,由于现代软件项目通常为多人合作开发,如果key散布在项目中会存在可读性差、安全性差和不利于key的管理等问题,甚至可能出现重复定义相同key的情况,导致相关数据被覆盖掉,从而导致软件出现异常。

发明内容

本发明的目的在于提供一种数据处理方法、装置和电子设备,以对key进行统一管理,避免key被重复定义,提高key的可读性、可维护性和易用性。

第一方面,本发明提供了一种数据处理方法,该方法包括:响应针对于目标基类的子类创建指令,创建目标基类的子类;响应针对目标数据的存储指令,在子类中申明目标数据的属性,并将属性标识为指定属性;调用预设的动态决议方法,为目标数据动态设置键值;响应针对于子类的调用指令,为目标数据的键值赋予属性值或者获取该属性值。

在可选的实施方式中,上述调用预设的动态决议方法,为目标数据动态设置键值的步骤,包括:调用动态决议方法,为目标数据的指定属性自动创建get/set方法;利用get/set方法,根据子类当前所包含的键值的属性名,确定目标数据的键值。

在可选的实施方式中,上述动态决议方法包括SEL方法。

在可选的实施方式中,上述响应针对于目标基类的子类创建指令,创建目标基类的子类的步骤之前,上述方法还包括:响应针对于目标基类的创建指令,创建目标基类;响应针对于目标基类的容器创建指令,为目标基类创建用于数据存储的容器。

在可选的实施方式中,上述用于数据存储的容器包括NSUserDefaults。

在可选的实施方式中,上述响应针对于目标基类的子类创建指令,创建目标基类的子类的步骤之后,上述方法还包括:响应子类的设置指令,将子类设置为单例类。

在可选的实施方式中,上述将属性标识为指定属性的步骤,包括:将属性标识为@dynamic。

第二方面,本发明提供了一种数据处理装置,该装置包括:子类创建模块,用于响应针对于目标基类的子类创建指令,创建目标基类的子类;属性设定模块,用于响应针对目标数据的存储指令,在子类中申明目标数据的属性,并将属性标识为指定属性;键值设置模块,用于调用预设的动态决议方法,为目标数据动态设置键值;属性值赋予模块,用于响应针对于子类的调用指令,为目标数据的键值赋予属性值或者获取该属性值。

第三方面,本发明提供了一种电子设备,该电子设备包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以实现前述实施方式任一项所述的数据处理方法。

第四方面,本发明提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现前述实施方式任一项所述的数据处理方法。

本发明实施例带来了以下有益效果:

本发明提供的一种数据处理方法、装置和电子设备,首先响应针对于目标基类的子类创建指令,创建目标基类的子类;进而响应针对目标数据的存储指令,在子类中申明目标数据的属性,并将属性标识为指定属性;再调用预设的动态决议方法,为目标数据动态设置键值;然后响应针对于子类的调用指令,为目标数据的键值赋予属性值或者获取键值赋予的属性值。该方式能够将数据存储中的键值对转化为属性的形式,并将所有的键值收敛到一个类中,对键值进行统一管理,从而避免了键值分散、重复定义的问题,同时也提高了键值的可读性、可维护性、安全性和易用性。

本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。

附图说明

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

图1为本发明实施例提供的一种数据处理方法的流程图;

图2为本发明实施例提供的另一种数据处理方法的流程图;

图3为本发明实施例提供的一种数据处理装置的结构示意图;

图4为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前,NSUserDefaults通常在使用时需要开发人员自定义常量字符串键值key,由于现代软件项目通常为多人合作开发,如果key散布在项目中会存在可读性差、安全性差和不利于key的管理等问题,甚至可能出现重复定义相同key的情况,导致相关数据被覆盖掉,从而导致软件出现异常。

基于上述问题,本发明实施例提供了一种数据处理方法、装置和电子设备,该技术可以应用于涉及macOS、iOS、watchOS、tvOS等系统相关的软件开发场景中。为便于对本实施例进行理解,首先对本发明实施例所公开的一种数据处理方法进行详细介绍,如图1所示,该方法包括如下具体步骤:

步骤S102,响应针对于目标基类的子类创建指令,创建目标基类的子类。

上述目标基类是研发人员预先创建的一个基类,基类在面向对象设计中被定义为包含所有实体共性的class类型,通常基类对应面向对象编程中的继承性,继承性允许在构成软件系统的层次结构中利用已经存在的类并扩充它们,以支持新的功能。这使得编程者只需要在新类中定义已经存在的类中所没有的成分来建立新类,从而大大提高了软件的可重用性和可维护性。

上述目标基类(也可称为父类)的子类可以继承目标基类的所有信息,创建目标基类的子类的目的是为了后续所有的key(相当于键值)都在子类中管理,从而实现key的统一管理。

步骤S104,响应针对目标数据的存储指令,在上述子类中申明目标数据的属性,并将该属性标识为指定属性。

在具体实现时,上述目标基类对应有用于数据存储的容器,当接收到目标数据的存储指令时,也即是研发人员想要在容器中存储目标数据时,需要在目标基类的子类中申明目标数据的属性,之后在项目中的任何地方都可以存储该目标数据,然后还需要将该目标数据的属性设置为指定属性。该指定属性可以是@dynamic或者其他研发人员定义的属性。将属性标识为指定属性是为了防止系统自动给目标数据的属性生成获取或者设置的方式,以为目标数据动态添加获取或者设置的方式。

上述目标数据可以是用户设置、系统配置等比较轻量级的数据,例如,用户名称、用户年龄等。

步骤S106,调用预设的动态决议方法,为目标数据动态设置键值。

上述动态决议方法可以根据研发需求设置,例如,可以设置为resolveInstanceMethod(简称SEL方法)。在一个实施例中,该方法属于Objective-C编程语言消息发送的一个环节,当程序对象发送一个消息时,先会在子类的方法列表中查找该消息的相关方法,如果没有找到目标方法,则会去该子类对应的基类的方法列表中查找,还是没有找到的话,则会调用动态决议方法。可见,如果调用一个不存在的方法时,最终都会走到调用SEL方法的步骤,该SEL方法中则会包含有目标方法的所有信息。

通常Objective-C语言会为属性自动创建获取或者设置的方法。本发明可以根据Sel方法,利用runtime技术动态为属性添加获取或者设置的方法,动态添加获取或者设置的方法的目的是为了在获取或者设置的方法中,根据子类中所包含的属性名自动为目标数据创建合适的key(相当于上述键值)。

在具体现实时,由于同一个类中是不能存在两个相同的属性名的,所以同一个类中key一定是不可重复定义的唯一的值。可见,本发明可以将key收敛起来,甚至不需要软件开发人员的特别维护,只需要维护类中的属性即可,从而本发明大大提高了key的易用性和可维护性。

步骤S108,响应针对于子类的调用指令,为目标数据的键值赋予属性值或者获取键值赋予的属性值。

本发明实施例提供的一种数据处理方法,首先响应针对于目标基类的子类创建指令,创建目标基类的子类;进而响应针对目标数据的存储指令,在子类中申明目标数据的属性,并将属性标识为指定属性;再调用预设的动态决议方法,为目标数据动态设置键值;然后响应针对于子类的调用指令,为目标数据的键值赋予属性值或者获取键值赋予的属性值。该方式能够将数据存储中的键值对转化为属性的形式,并将所有的键值收敛到一个类中,对键值进行统一管理,从而避免了键值分散、重复定义的问题,同时也提高了键值的可读性、可维护性、安全性和易用性。

本发明实施例还提供了另一种数据处理方法,该方法在上述实施例方法的基础上实现;该方法重点描述响应针对目标数据的存储指令,在上述子类中申明目标数据的属性,并将该属性标识为指定属性的具体过程(通过下述步骤S204实现),以及调用预设的动态决议方法,为目标数据动态设置键值的具体过程(具体通过下述步骤S206-S208实现);如图2所示,该方法包括如下具体步骤:

步骤S202,响应针对于目标基类的子类创建指令,创建目标基类的子类;响应该子类的设置指令,将子类设置为单例类。

在具体实现时,上述步骤S202之前,需要响应针对于目标基类的创建指令,创建目标基类;然后再响应针对于目标基类的容器创建指令,为目标基类创建用于数据存储的容器。

上述用于数据存储的容器可以是所有以键值对key-value结构存储的容器,例如,用于数据存储的容器可以是NSUserDefaults。其中,NSUserDefaults作为一个系统自带的轻量级存储容器,对于苹果系统软件开发者学习成本极低,所以依然可以使用其作为容器。

由于NSUserDefaults是一个全局单例,即在项目工程中,随处都可使用,创建单例类的子类可以使项目中需要存储的数据都存储在同一区域中,便于研发人员共同维护数据。

步骤S204,响应针对目标数据的存储指令,在上述子类中申明目标数据的属性,并将该属性标识为@dynamic。

步骤S206,调用动态决议方法,为目标数据的指定属性自动创建get/set方法。

在具体实现时,根据动态聚决议方法,利用runtime技术可以动态为指定属性添加get/set方法,该get/set方法相当于获取或者设置的方法,比如对于一个name属性,getName就是取出这个name的名称,而setName就是设置name的名称。

步骤S208,利用get/set方法,根据子类当前所包含的键值的属性名,确定目标数据的键值。

上述get/set方法可以根据子类中当前所包含的键值的属性名,为目标数据设置与当前所包含的键值的属性名不同的键值的属性名,以确保键值的属性名的唯一性,从而也确保了键值的唯一性。

步骤S210,响应针对于子类的调用指令,为目标数据的键值赋予属性值或者获取键值赋予的属性值。

在具体实现时,调用单例类的子类实例可以给目标数据的键值赋值或者获取目标数据的属性值。在一个实施实例中,单例的使用目的是为了在软件生命周期内所有调用方拿到的都是同一个实例。实例是同一个,则实例的属性也是唯一。

上述数据处理方法,可以将键值收敛到子类进行统一管理,在键值管理时无需软件开发人员的特别维护,只需要维护类中的属性即可,从而大大提高了键值的易用性和可维护性。

针对于上述数据处理方法的实施例,本发明实施例还提供了一种数据处理装置,如图3所示,该装置包括:

子类创建模块30,用于响应针对于目标基类的子类创建指令,创建目标基类的子类。

属性设定模块31,用于响应针对目标数据的存储指令,在子类中申明目标数据的属性,并将属性标识为指定属性。

键值设置模块32,用于调用预设的动态决议方法,为目标数据动态设置键值。

属性值赋予模块33,用于响应针对于子类的调用指令,为目标数据的键值赋予属性值或者获取键值赋予的属性值。

上述数据处理装置,首先响应针对于目标基类的子类创建指令,创建目标基类的子类;进而响应针对目标数据的存储指令,在子类中申明目标数据的属性,并将属性标识为指定属性;再调用预设的动态决议方法,为目标数据动态设置键值;然后响应针对于子类的调用指令,为目标数据的键值赋予属性值或者获取键值赋予的属性值。该方式能够将数据存储中的键值对转化为属性的形式,并将所有的键值收敛到一个类中,对键值进行统一管理,从而避免了键值分散、重复定义的问题,同时也提高了键值的可读性、可维护性、安全性和易用性。

进一步地,上述键值设置模块32,用于:调用动态决议方法,为目标数据的指定属性自动创建get/set方法;利用该get/set方法,根据子类当前所包含的键值的属性名,确定目标数据的键值。

具体地,上述动态决议方法包括SEL方法。

在具体实现时,上述装置还包括基类创建模块,用于:在响应针对于目标基类的子类创建指令,创建目标基类的子类之前,响应针对于目标基类的创建指令,创建目标基类;再响应针对于目标基类的容器创建指令,为目标基类创建用于数据存储的容器。

具体地,上述用于数据存储的容器包括NSUserDefaults。

进一步地,上述装置还包括单例设置模块,用于:在响应针对于目标基类的子类创建指令,创建目标基类的子类之后,响应子类的设置指令,将子类设置为单例类。

进一步地,上述属性设定模块31,用于:将属性标识为@dynamic。

本发明实施例所提供的数据处理装置,其实现原理及产生的技术效果和前述数据处理方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。

本发明实施例还提供了一种电子设备,如图4所示,该电子设备包括处理器101和存储器100,该存储器100存储有能够被处理器101执行的机器可执行指令,该处理器101执行机器可执行指令以实现上述数据处理方法。

进一步地,图4所示的电子设备还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。

其中,存储器100可能包含高速随机存取存储器(RAM,RandomAccessMemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。

本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述数据处理方法,具体实现可参见方法实施例,在此不再赘述。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

相关技术
  • 数据处理方法、医学文本数据处理方法、装置及电子设备
  • 由电子设备执行的数据处理方法及装置、电子设备
技术分类

06120113256167