美文网首页
iOS SQLite迭代

iOS SQLite迭代

作者: iwevon | 来源:发表于2017-05-11 00:49 被阅读57次

    *** 前提:sqlite较复杂的情况是沙盒中已经存在了sqlite文件,再进行sqlite升级,下文按照此种情况描述,sqlite升级写的有点绕,希望下面简单的思路对你有帮助! ***

    方式一:文件名称排序比较 方式

    思路:App版本号与sqlite版本NSUserDefaults字段(或与sqlite信息)进行对比判断。较适合sqlite升级非常频繁的时候 `

    方式一
    • 1.1 获取当前的App版本号 与 sqlite版本字段(或与sqlite信息)
    当前的App版本号
    • 1.2 按照如下规则进行sql迭代升级文件编辑

    约定版本号时,如某一段中有多位数,需要用"0"补齐,如:2.3.05,最后一段"5"前需要补"0"(出现:2.2.3,2.3.10,需改成:2.2.03,2.3.10)

    更新的sql文件
    • 1.3 此次迭代后的App版本

    在code中需要将原始版本号"2.1.20170510"转换为sql文件名格式"2_1_20170510"

    迭代后App版本号
    • 1.4 筛选出需要迭代升级的sql文件
    sql文件内容
    • 1.5 根据定义的符号分割sql语句,使用"事务"去更新sqlite

    为了突出重点,这里偷了个懒,使用的是FMDB的事务API实现,按文件为单位更新sqlite,如果中间出现一条sql错误,将此文件所有的更新sql进行回滚

    事务更新sqlite
    • 1.6 更新完成 将App版本号写入本地sqlite对应NSUserDefaults字段中

    此处用的是NSUserDefaults方式存储,更新成功后:本地的sqlite对应的版本字段 === App当前版本

    写入NSUserDefaults中

    方式二:switch-break 方式

    *** 不同的核心代码如下图,为了清晰明了,code没有进行封装 ***
    思路:更新当前版本号开始升级,从低往高升。较适合sqlite升级不频繁的时候

    方式二
    附参考DEMO

    相关文章

      网友评论

          本文标题:iOS SQLite迭代

          本文链接:https://www.haomeiwen.com/subject/ecentxtx.html