iOS开发~App初始化或者升级涉及本地数据库迁移的问题
2014-08-14 14:43
561 查看
总体思路
一般app启动之后,都有一个初始化的过程。此外后续app升级,还需要考虑数据迁移。所以初始化和数据迁移的框架,在初期的版本就要考虑好总结一下我们的app采取的方案:
1、在持久化的文件夹内(比如UserDefaults或者Documents目录),用一个字段保存老版本号
2、在开始初始化之前,读取老版本号,以及当前版本号
3、如果该应用是第一次加载,那么老版本号就取不到(因为是初次加载,这个字段还没有保存),那么就可以执行初始化过程;如果取到了老版本号,就不执行初始化
4、初始化完成之后,执行数据迁移。因为有老版本号和新版本号,所以可以通过对比,实现增量式的迁移
5、上述动作都完成之后,刷新老版本号
6、下次正常启动,就不会再初始化,也不会执行数据迁移了;如果是安装新版本,由于当前版本号刷新,又会触发数据迁移
用户切换账户的场景
上面说的是比较简单的场景。如果应用允许多用户切换账号,而且不同用户的数据是分离的,就更复杂一些首先标识老版本号的字段不能保存在UserDefaults里,因为UserDefaults是用户共享的。这样当A用户初始化之后,老版本号就存在了。切换到B用户,发现老版本号已存在,则不会执行初始化,其实这时候B用户的数据文件还没有创建好。所以需要把老版本号存在单独的地方,比如每个用户各自的sqlite文件中
然后,读取老版本号的时候,也要根据用户的独立标识去查询
改进
目前暂时是把老版本号保存在sqlite里,但是这样首次读取的时候,判断逻辑比较麻烦。需要判断sqlite文件是否存在,然后要判断table有没有,最后才能取值。如果用文本保存可能会稍微方便一点,比存在sqlite里,少了一个判断table是否存在的步骤示意代码
相关文章推荐
- (转)iOS App初始化或者升级,涉及本地数据库迁移的问题
- CoreData(数据库升级 )版本迁移-iOS App升级安装
- iOS-App版本升级时数据库的迁移更新
- Android 版本升级涉及到的数据库数据迁移问题
- Android 版本升级涉及到的数据库数据迁移问题
- 【iOS开发问题】使用NSCoding写入本地文件读取不出来或者文件没有写入本地
- CoreData(数据库升级 )版本迁移-iOS App升级安装
- iOS app更新数据库数据迁移问题
- CoreData(数据库升级 )版本迁移-iOS App升级安装
- iOS开发:真机或者模拟器中,APP中的按钮文字下面自动出现下划线的问题的解决
- ios开发之APP升级的实现
- IOS开发笔记之九——类型不匹配导致的app崩溃问题(bug总结二)
- ios app开发时遇到的问题和解决方法教程
- 数据库开发红皮书实例遇到的一些问题:“找不到可安装的ISAM” “BOF或EOF中有一个是'真',或者当前的记录已被删除……”
- Oracle 数据库迁移数据的建议方法(ASM 到 本地硬盘,或者本地硬盘到 ASM)
- ios开发小结之app发布升级
- IOS APP 升级安装-coredata 的迁移,升级
- iOS 版本迭代 App升级安装 CoreData数据库升级
- IOS APP开发提交流程证书问题
- IOS APP开发提交流程证书问题