CN107967368A - 一种包含数组结构的缓存方法 - Google Patents

一种包含数组结构的缓存方法 Download PDF

Info

Publication number
CN107967368A
CN107967368A CN201711475847.5A CN201711475847A CN107967368A CN 107967368 A CN107967368 A CN 107967368A CN 201711475847 A CN201711475847 A CN 201711475847A CN 107967368 A CN107967368 A CN 107967368A
Authority
CN
China
Prior art keywords
data
array
keyword
class
caching
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201711475847.5A
Other languages
English (en)
Other versions
CN107967368B (zh
Inventor
郭艳杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kuwo Technology Co Ltd
Original Assignee
Beijing Kuwo Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Kuwo Technology Co Ltd filed Critical Beijing Kuwo Technology Co Ltd
Priority to CN201711475847.5A priority Critical patent/CN107967368B/zh
Publication of CN107967368A publication Critical patent/CN107967368A/zh
Application granted granted Critical
Publication of CN107967368B publication Critical patent/CN107967368B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying
    • G06F16/835Query processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种包含数组结构的缓存方法,通过数据封装类dbWapper获取需要缓存的数据fmPersistentData,进而得到需要缓存的所有关键词fmPersistentKeys,遍历各关键词fmPersistentKeys,当其为数组时,将其中的数值转化为字典结构,并将其存入临时数组,最后将临时数组转化为Json数据,通过KVC机制将Json数据和关键词绑定,将Json数据返回给数据库管理类DBManager进行缓存。本发明,对数组进行处理,将其转换为便于缓存的结构后,再进行缓存处理,实现了包含数组结构情况时的缓存操作,提高了数据处理的兼容性和便利性,可作为缓存的辅助处理模块,供需要应用的场景调用。

Description

一种包含数组结构的缓存方法
技术领域
本发明涉及数据缓存技术领域,具体说是一种包含数组结构的缓存方法。
背景技术
现有的iOS系统中,缓存是不支持数组结构的,因为数组是一个复杂结构,其中还有其他对象,其他对象也可能再包含数组。
在写入缓存时,有些数据是不进行缓存的,例如:只要进行相应的设置,有些属性是可以不缓存的,再例如:只读属性也是不缓存的。这些均是用户可根据需要自行配置的。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种包含数组结构的缓存方法,对数组进行处理,将其转换为便于缓存的结构后,再进行缓存处理,实现了包含数组结构情况时的缓存操作,提高了数据处理的兼容性和便利性,可作为缓存的辅助处理模块,供需要应用的场景调用。
为达到以上目的,本发明采取的技术方案是:
一种包含数组结构的缓存方法,其特征在于,包括如下步骤:
创建数据库管理类DBManager,在其中增加一个模块类Model,
在模块类Model中初始化数据封装类dbWapper,
通过数据封装类dbWapper获取需要缓存的数据fmPersistentData,
解析需要缓存的数据fmPersistentData,得到需要缓存的所有关键词fmPersistentKeys,
遍历各关键词fmPersistentKeys,判断关键词对应的数值是否为数组,
如果不是则忽略,
如果是则按下述objtoDictionary步骤处理:
新建临时数组,
遍历关键词对应的数组,判断数组中各数值是否是baseModel的子类,
如果不是则忽略,
如果是则转化该baseModel的子类的数值为字典结构,并将其存入临时数组,
完成遍历关键词对应的数组后,将只包含基本数据结构的临时数组转化为Json数据,
通过KVC机制将Json数据和关键词绑定,
将Json数据返回给数据库管理类DBManager进行缓存。
在上述技术方案的基础上,所述基本数据结构,包括:
整型int,
浮点型,具体包括单精度float、双精度double,
字符型char。
在上述技术方案的基础上,所述数据封装类dbWapper,包括:
临时数组创建方法table(),
插入数据方法insert(),
返回数据方法commit()。
在上述技术方案的基础上,当关键词的子属性为数组时,重复循环调用objtoDictionary步骤处理。
在上述技术方案的基础上,在转化该baseModel子类的对象为字典结构时,
首先获取当前类的所有属性copyPropertyList,
通过遍历操作property_getAttributes获取属性的特性,
当属性的特性为只读特性R时,忽略该属性,不进行缓存处理,否则,通过名称读取操作property_getName获取属性的名称,
通过KVC机制获取属性对应的数值,
检查数值是否为数组,
如果是,则跳转到objtoDictionary步骤处理,
如果不是,判断是否是baseModel的子类,
如果不是,则直接将数值和关键词绑定,
如果是,则调用toDictionary转为基本数据结构,
转化为Json字符串,
通过KVC机制将Json字符串和关键词绑定。
本发明所述的包含数组结构的缓存方法,对数组进行处理,将其转换为便于缓存的结构后,再进行缓存处理,实现了包含数组结构情况时的缓存操作,提高了数据处理的兼容性和便利性,可作为缓存的辅助处理模块,供需要应用的场景调用。
附图说明
本发明有如下附图:
图1本发明的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1所示,本发明所述的包含数组结构的缓存方法,包括如下步骤:
创建数据库管理类DBManager,在其中增加一个模块类Model,
在模块类Model中初始化数据封装类dbWapper,
通过数据封装类dbWapper获取需要缓存的数据fmPersistentData,
解析需要缓存的数据fmPersistentData,得到需要缓存的所有关键词fmPersistentKeys,
遍历各关键词fmPersistentKeys,判断关键词对应的数值是否为数组,
如果不是则忽略,
如果是则按下述objtoDictionary步骤处理:
新建临时数组,
遍历关键词对应的数组,判断数组中各数值是否是baseModel的子类,
如果不是则忽略,
如果是则转化该baseModel的子类的数值为字典结构,并将其存入临时数组,
完成遍历关键词对应的数组后,将只包含基本数据结构的临时数组转化为Json数据,
通过KVC机制将Json数据和关键词绑定,
将Json数据返回给数据库管理类DBManager进行缓存。
在上述技术方案的基础上,所述基本数据结构(基础数据),包括:
整型int,
浮点型,具体包括单精度float、双精度double,
字符型char。
在上述技术方案的基础上,所述数据封装类dbWapper,包括:
临时数组创建方法table(),
插入数据方法insert(),
返回数据方法commit()。
在上述技术方案的基础上,当关键词的子属性为数组时,重复循环调用objtoDictionary步骤处理。
在上述技术方案的基础上,在转化该baseModel子类的对象为字典结构时,
首先获取当前类的所有属性copyPropertyList,
通过遍历操作property_getAttributes获取属性的特性,
当属性的特性为只读特性R时,忽略该属性,不进行缓存处理,否则,通过名称读取操作property_getName获取属性的名称,
通过KVC机制获取属性对应的数值,
检查数值是否为数组,
如果是,则跳转到objtoDictionary步骤处理,
如果不是,判断是否是baseModel的子类,
如果不是,则直接将数值和关键词绑定,
如果是,则调用toDictionary转为基本数据结构,
转化为Json字符串,
通过KVC机制将Json字符串和关键词绑定。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

Claims (5)

1.一种包含数组结构的缓存方法,其特征在于,包括如下步骤:
创建数据库管理类DBManager,在其中增加一个模块类Model,
在模块类Model中初始化数据封装类dbWapper,
通过数据封装类dbWapper获取需要缓存的数据fmPersistentData,
解析需要缓存的数据fmPersistentData,得到需要缓存的所有关键词fmPersistentKeys,
遍历各关键词fmPersistentKeys,判断关键词对应的数值是否为数组,
如果不是则忽略,
如果是则按下述objtoDictionary步骤处理:
新建临时数组,
遍历关键词对应的数组,判断数组中各数值是否是baseModel的子类,
如果不是则忽略,
如果是则转化该baseModel的子类的数值为字典结构,并将其存入临时数组,
完成遍历关键词对应的数组后,将只包含基本数据结构的临时数组转化为Json数据,
通过KVC机制将Json数据和关键词绑定,
将Json数据返回给数据库管理类DBManager进行缓存。
2.如权利要求1所述的包含数组结构的缓存方法,其特征在于:所述基本数据结构,包括:
整型int,
浮点型,具体包括单精度float、双精度double,
字符型char。
3.如权利要求1所述的包含数组结构的缓存方法,其特征在于:所述数据封装类dbWapper,包括:
临时数组创建方法table(),
插入数据方法insert(),
返回数据方法commit()。
4.如权利要求1所述的包含数组结构的缓存方法,其特征在于:当关键词的子属性为数组时,重复循环调用objtoDictionary步骤处理。
5.如权利要求1所述的包含数组结构的缓存方法,其特征在于:在转化该baseModel子类的对象为字典结构时,
首先获取当前类的所有属性copyPropertyList,
通过遍历操作property_getAttributes获取属性的特性,
当属性的特性为只读特性R时,忽略该属性,不进行缓存处理,否则,通过名称读取操作property_getName获取属性的名称,
通过KVC机制获取属性对应的数值,
检查数值是否为数组,
如果是,则跳转到objtoDictionary步骤处理,
如果不是,判断是否是baseModel的子类,
如果不是,则直接将数值和关键词绑定,
如果是,则调用toDictionary转为基本数据结构,
转化为Json字符串,
通过KVC机制将Json字符串和关键词绑定。
CN201711475847.5A 2017-12-29 2017-12-29 一种包含数组结构的缓存方法 Active CN107967368B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711475847.5A CN107967368B (zh) 2017-12-29 2017-12-29 一种包含数组结构的缓存方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711475847.5A CN107967368B (zh) 2017-12-29 2017-12-29 一种包含数组结构的缓存方法

Publications (2)

Publication Number Publication Date
CN107967368A true CN107967368A (zh) 2018-04-27
CN107967368B CN107967368B (zh) 2021-12-28

Family

ID=61993307

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711475847.5A Active CN107967368B (zh) 2017-12-29 2017-12-29 一种包含数组结构的缓存方法

Country Status (1)

Country Link
CN (1) CN107967368B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140244938A1 (en) * 2013-02-27 2014-08-28 Vmware, Inc. Method and Apparatus for Returning Reads in the Presence of Partial Data Unavailability
CN104915450A (zh) * 2015-07-01 2015-09-16 武汉大学 一种基于HBase的大数据存储与检索方法及系统
CN106776779A (zh) * 2016-11-23 2017-05-31 北京车网通科技有限公司 基于Mac平台的JSON数据生成实体文件的方法
CN107479930A (zh) * 2017-08-16 2017-12-15 四川长虹电器股份有限公司 用于iOS系统中加载动态内容混排的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140244938A1 (en) * 2013-02-27 2014-08-28 Vmware, Inc. Method and Apparatus for Returning Reads in the Presence of Partial Data Unavailability
CN104915450A (zh) * 2015-07-01 2015-09-16 武汉大学 一种基于HBase的大数据存储与检索方法及系统
CN106776779A (zh) * 2016-11-23 2017-05-31 北京车网通科技有限公司 基于Mac平台的JSON数据生成实体文件的方法
CN107479930A (zh) * 2017-08-16 2017-12-15 四川长虹电器股份有限公司 用于iOS系统中加载动态内容混排的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MY小强个: "ios:一键Model转Json或者NSDictionary", 《CSDN》 *

Also Published As

Publication number Publication date
CN107967368B (zh) 2021-12-28

Similar Documents

Publication Publication Date Title
CN103440273B (zh) 一种数据跨平台迁移方法及装置
CN1148680C (zh) 显示分层结构的方法、系统以及一种计算机系统
CN104102545B (zh) 移动增强现实浏览器三维资源配置与加载的优化方法
CN102541541B (zh) 界面生成方法和装置
CN103488704B (zh) 一种数据存储方法及装置
CN101799826B (zh) 一种基于虚拟视图的网络化数据共享系统及方法
CN106844643A (zh) 一种基于模板引擎的数据库动态生成方法
CN102073633A (zh) 资源文件的存储访问方法及装置
CN1203433C (zh) 嵌入式系统的数据存放及其查找组合方法
CN106407302A (zh) 支持通过简单sql调用中间件数据库特有功能的方法
CN104731590B (zh) 一种用户界面控件实现方法及装置
CN109445784A (zh) 结构数据的处理方法、装置、存储介质及电子设备
CN103294796A (zh) 一种xml解析方法及医疗病案中自定义xml结构表单实现方法
CN104270257B (zh) 基于pb和xpath的网元级网管业务配置适配系统及方法
CN110297636A (zh) 一种基于页面配置文件的页面自动生成和参数管理方法、系统和装置
CN104615713A (zh) 一种基于多数据库类型的sql执行方法和装置
CN113094355A (zh) 基于国产化通信协议的模型实例化方法、装置、设备及介质
CN104915416A (zh) 一种能够快速导出含有特定属性器件物料清单的方法
CN101546546B (zh) 一种网络数据转换装置及其数据转换控制方法
CN103888790B (zh) 一种epg适配系统及方法
CN107967368A (zh) 一种包含数组结构的缓存方法
CN106649428A (zh) 存储文件的解析方法和装置
CN101714087A (zh) C语言结构体至关系数据库表的映射系统及映射方法
CN105700825A (zh) 一种基于Android系统的缩略图存储方法和装置
CN1713176A (zh) 动态对象存取系统及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant