EasyDataKit 简单易用的 SQLite 轮子

EasyDataKit 是一个基于 FMDB 封装的库,它可以免去开发者编写复杂 SQL 的困扰,更加专注业务上的事情,从而提高开发效率。

特征

  • 类 ORM 接口
  • 自动创建库和表,支持表新增字段的修改
  • 支持 where 查询语句
  • 自动事务提升插入效率

使用

EasyDataKit 适用于将网络请求的数据持久化到数据库中,特别是处理网络请求数据时不习惯把数据转换成 model。笔者的浅见是:转换对性能是有消耗的,获得的可读性好处也可以通过字符串常量解决。(这儿有篇探讨

假设你通过网络请求获取到了数据:

 

你可将这段 JSON String 转换成 Dictionary 或 Array:

接着便可使用 EasyDataKit 的 API 进行存储:

可以手动为数据添加列,实现满足业务的需求:

如果你想让某纪录关联其它对象,可以将对象存储后返回的 id 作为 value,key 是该纪录原本对应该对象的字段,这相当于用 id 这个值去替换原本字段对应的对象,从而达到拆分的目的:

EasyDataKit 还可以存储索引

对存储来说,EasyDataKit 还提供了自动 ALTER TABLE 添加列的功能,方便开发者应对升级,原理是当检测到待存储的字典 keys 数组元素个数比之前已经在表中的列多时,则会自动为表添加新的列,即并不支持修改列和删除列的操作,而 EasyDataKit 对创建的索引是支持修改删除的。

查询:

查询嵌套对象并将其转换为 Dictionary 或 Array:

更新:

删除:

由上面可以看出,只要创建出 EDKEntity 对象,就可以轻松加愉快地进行存储,查找,修改,删除操作。开发者无需创建数据库、表,EasyDataKit 也支持 db 的划分,但不提供内存缓存,原因是笔者认为没有热块的数据库缓存意义不是太大。当有写操作发生的时候,EasyDataKit 会通过轮询的事务机制打包写操作,从而提高频繁写操作的效率。(更详细的使用请移步 EasyDataKit 中的 Example)

源码简析

EasyDataKit 有个 swizzle 了 NSMutableDictionary 的 setObject:forKey: 和 NSMutableArray 的 addObject:,使得应对空值不会 crash。

EasyDataKit 还有个递归方法:dealWithObject:,主要有两个用途:一是用来检测除了 NSDictionary、NSArray、NSString、NSNumber、NSNull 这些类型以外的合法性,譬如 UIView 类型直接调用 description 转换成字符串;二是为了能让嵌套的 Dictionary 或 Array 以 JSON String 的形式存入数据库,在取出后仍可以将其转换回 Dictionary 或 Array。

DISPATCH_SOURCE_TYPE_TIMER 创建的定时器。

打赏支持我写出更多好文章,谢谢!

打赏作者

打赏支持我写出更多好文章,谢谢!

1 1 收藏 2 评论

关于作者:Hawk0620

喜欢新奇事物,爱探索和冒险,用艺术的视角欣赏技术,也迷恋篮球和音乐。 个人主页 · 我的文章 · 2 ·  

相关文章

可能感兴趣的话题



直接登录
最新评论
跳到底部
返回顶部