业务场景:
一般来说,具有持久层的App同时都会附带着有版本迁移的需求。当一个用户安装了旧版本的App,此时更新App之后,
若数据库的表结构需要更新,或者数据本身需要批量地进行更新,此时就需要有版本迁移机制来进行这些操作。
然而版本迁移机制又要兼顾跨版本的迁移需求,所以基本上大方案也就只有一种:建立数据库版本节点,迁移的时候一个一个跑过去。
数据迁移事实上实现起来还是比较简单的,做好以下几点问题就不大了:
1.根据应用的版本记录每一版数据库的改变,并将这些改变封装成对象
2.记录好当前数据库的版本,便于跟迁移记录做比对
3.在启动数据库时执行迁移操作,如果迁移失败,提供一些降级方案
CTPersistance也提供了Migrator。
业务工程师可以自己针对某一个数据库编写一个Migrator。
这个Migrator务必派生自CTPersistanceMigrator,且符合<CTPersistanceMigratorProtocol>,只要提供一个migrationStep的字典,以及记录版本顺序的数组。然后把你自己派生的Migrator的类名和对应关心的数据库名写在CTPersistanceConfiguration.plist里面就可以。CTPersistance会在初始数据库的时候,根据plist里面的配置对应找到Migrator,并执行数据库版本迁移的逻辑。
转载:
https://casatwy.com/iosying-yong-jia-gou-tan-ben-di-chi-jiu-hua-fang-an-ji-dong-tai-bu-shu.html