项目介绍:MofaDB
上次说的要做个objective-c下归档工具
大概是这样的:
已有归档工具内部太复杂,不容易调试,长久依赖也不利于成长,决定自己造个轮子。
一键存储,结构简单,方便调试;用字典作为数据结构沟通 Model 和 SQL DB
预估 10 MD,实际初版仅用3天
项目地址:
https://github.com/moofaa/MofaDB
项目特征:
项目使用:
- 开发者只要引入头文件 #import “MofaDBPrefix.h”
- 生成 Model 对象,继承自 Model
- 调用 NSObject 类拓展方法,即可完成 db 自动创建、自动建表、手动增删改查。
+(void)insert:(id)model;
+(void)update:(id)model;
+(NSArray *)select:(id)model;
+(NSArray *)selectWhere:(NSString *)sqlWhere;
+(NSArray *)selectAll;
+(void)delete:(id)model;
+(void)deleteWhere:(NSString *)sqlWhere;
- 非常重要的一点,使用一下四个方法的 model对象一定要设置 hostID。 当初没有考虑到一个对象增删改查,必定是基于此对象进行的。设置hostID唯一标识DB中此条数据。
+(void)insert:(id)model;
+(void)update:(id)model;
+(NSArray *)select:(id)model;
+(void)delete:(id)model;
项目后续需要改进的:
- DB 我作为单例去做,考虑到并没有太多数据需要存,以简单的方式去做,没做并发
- Object运行时,属性的类型固定的就那么几十个,每次获取属性类型列表和属性值列表,都要计算一下,这是不科学的,常用的就那么几个,NSString,NSNumber,int,float,bool等,这个可以放在内存中,用空间减少CPU的计算
- Object 映射到SQL DB 中,只做了 NSINTEGER TEXT 这两种映射,有需要的开发者可以自己尝试拓展:只需要涉及两个文件(ObjType和 DBManager的select方法–为了返回对象)
- 忽略部分 NSObject 系统自带属性,因为不需要。
项目借鉴:
- Object SQL 数据类型映射
- where 语句生成
- 对象类直接操作DB,当初是想直接用DB管理类去做此事,考虑到 DB管理类 只负责增删改查,数据库和表的操作,不该把对象的东西放进来,于是把此功能独立放到 NSObject 类拓展方法 中
不做的功能,以及为什么不做:
- 数据级联: 数据级联方便了开发者,增加了复杂度,增加复杂度导致不利于拓展,不利于开发者调试。
项目可以独立出来的工具:
- Object runtime 获得所有属性名称-属性类型-属性值
- SQL where 生成类
感谢
此项目借鉴了冯成林的CoreModel:30%的相似度,可以算是精简版DB。
https://github.com/CharlinFeng/CoreModel