2018.10.31
FMDB是iOS平台下的SQLite数据库,以OC方式封装后,更加方便快捷。
没学数据库之前,一直纠结用什么方式能够持久保存且追加不覆盖,直到看到了离线缓存SQLite。
FMDB应用在当前的项目中,保存好友数据,以往都是id主键加各种类型作为字段形成多条记录;
因为数据库要保存的是模型,因此字段改成了以blob为格式,将传入的模型增删改查都以blob 格式操作;
流程:
1.封装一个工具类,类中包含增删改查、模型转data、data转模型等接口;
2.老流程,初始化initialize中打开数据库,创建表格;
3.以下增删改查,都是blob的,与平常的略有点不同。我是根据需求排序
增(存):获取网络字典数组转模型数组,遍历模型数组,取出模型,模型转字典,字典转data,保存到数据库;
查(取):查询某字段,返回数据集;随着数据集下移,取出blob里的data, 经过data转字典,字典转模型,放在数组中返回;
改(备注):以改备注为例,需要以前的昵称和修改后的备注,存入的是blob数据没有昵称字段如何修改?只能遍历数组去取出需要修改的模型,将原来的昵称转成data,修改后的备注也转成data ,updata 时设置约束(但data==原来昵称data)时修改为新的备注blob;这样修改才能成功
删:遍历数组,取出需要删除的ID、模型,转成data ,执行删除方法。
总结:备注一直没修改成功的原因
1.使用代理逆传,接收方的代理方法执行比viewWillAppear快,所以viewWillAppear从数据库中取覆盖了备注
2.需要拿到原来的昵称、修改的备注都改成data格式,才能去数据库中查询修改;
如果你是将数据模型存进数据库,字段以blob保存,可以使用以上方法,参见gitHub地址