(转)iOS App初始化或者升级,涉及本地数据库迁移的问题
2015-11-25 11:05
435 查看
总体思路
转自http://www.bubuko.com/infodetail-312724.html一般app启动之后,都有一个初始化的过程。此外后续app升级,还需要考虑数据迁移。所以初始化和数据迁移的
总结一下我们的
1、在持久化的
2、在开始初始化之前,读取老版本号,以及当前版本号
3、如果该应用是第一次加载,那么老版本号就取不到(因为是初次加载,这个字段还没有保存),那么就可以执行初始化过程;如果取到了老版本号,就不执行初始化
4、初始化完成之后,执行数据迁移。因为有老版本号和新版本号,所以可以通过对比,实现增量式的迁移
5、上述动作都完成之后,刷新老
6、下次正常启动,就不会再初始化,也不会执行数据迁移了;如果是安装新版本,由于当前版本号刷新,又会触发数据迁移
用户切换账户的场景
上面说的是比较简单的场景。如果应用允许多用户切换账号,而且不同用户的数据是分离的,就更复杂一些首先标识老版本号的字段不能保存在UserDefaults里,因为UserDefaults是用户共享的。这样当A用户初始化之后,老版本号就存在了。切换到B用户,发现老版本号已存在,则不会执行初始化,其实这时候B用户的数据文件还没有创建好。所以需要把老版本号存在单独的地方,比如每个用户各自的sqlite文件中
然后,读取老版本号的时候,也要根据用户的独立
改进
目前暂时是把老示意代码
相关文章推荐
- iOS 性能优化:Instruments 工具的救命三招
- IOS_改变状态栏颜色 隐藏状态栏
- android-activity
- iOS 学习笔记
- Android,setTextColor等背景选择器设置失败问题,及多种设置方法
- Android 使用 ViewPager循环广告位的实现
- Swift类方法
- Android 将Activity打成jar包供第三方调用
- android:关于系统时间
- iOS-语言本地化
- androidstudio 中 使用git
- 个人不常用、但是热门的iOS第三方库
- xcode7集成百度地图(framwork包) archive是bitcode问题
- iOS +AFNetworking2.0调用webService
- 【转】android多分辨率适配
- Android平板上开发应用的一点心得——精确适配不同的dpi和屏幕尺寸
- 关于EditText的一点深入的了解
- 自定义android主题样式
- Android总结篇系列:Android广播机制
- cocos2d-x中求两坐标的夹角