iPhone/iPad应用开发数据库升级
来源:互联网 发布:网络案件的侦查取证 编辑:程序博客网 时间:2024/04/29 00:16
APP开发技术QQ群:347072638
为什么数据库要升级?
由于需求变动或增加,原来的数据库结构设计不满足现有的需求(当然,如果一开始就考虑到了,那数据库升级就是多此一举了)。1、用户已经在使用旧产品,新产品需要更新的情况下(前提是用户不删除App,而是直接通过AppStore update)。
2、第一次下载安装此app不需要升级(知道为什么的话,请看后面)。
3、删除App,重新下载安装的不需要升级,理由如2。
版本比较多,升级次数比较多,用户使用的版本不确定,需要一步一步升级上去。
如何实现?
首先要知道用户当前使用的是哪一个版本,这个没办法,只有保存旧版本号才能实现。,然后在升级时读出旧版本号,判断旧版本是处在那一个升级处,然后在执行以上升级处的sql脚本。
每次升级都有对应的脚本,如果 从低版本升级到高版本时每一个脚本都要跑一遍(这就有一个问题,要花时间,让用户等待。此时还要考虑如果用户突然中断升级怎么办?断电,内存不足,手按Home键等)。
//如果DB不存在,直接返回
//判断第一次安装
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if (!dba._bIsExistDB) {
NSString *version = [pVersionArray lastObject];
[userDefaults setObject:version forKey:@"old_version"];
[userDefaults synchronize];
return YES;
}
//DB存在,是否要进行数据库升级
NSString *version = [pVersionArray lastObject];
NSString *oldVersion = [userDefaults objectForKey:@"old_version"];
if (![version isEqualToString:oldVersion]) {
[self upGradeDB];
[userDefaults setObject:version forKey:@"old_version"];
[userDefaults synchronize];
}
-(void)upGradeDB
{
SEL pfunc1 = @selector(upgrade200);
NSNumber *num1 = [[NSNumber alloc] initWithInt:(int)pfunc1];
NSArray *_pArraAyFun = [NSArray arrayWithObjects:num1, nil];
[num1 release];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSString *oldVersion = [userDefaults objectForKey:@"old_version"];
NSInteger nCurrect = [pVersionArray count];
if ([oldVersion isKindOfClass:[NSNull class]]
|| oldVersion == nil
|| [oldVersion isEqualToString:@""]) {
nCurrect = 0;
}else
{
NSInteger i = 0;
for (NSString *version in pVersionArray) {
if ([version isEqualToString:oldVersion]) {
nCurrect = i;
nCurrect ++;
break;
}
i++;
}
if (i >= [pVersionArray count]) {
//根据版本号来调整当前最接近哪个版本
nCurrect = i;
}
}
for (NSInteger index = nCurrect; index < [pVersionArray count]; index++) {
SEL pFunc = (SEL)[[_pArraAyFun objectAtIndex:index] intValue];
[self performSelector:pFunc];
}
}
- (void)upgrade200
{
//升级脚本
}
- iPhone/iPad应用开发数据库升级
- iPhone iPad游戏应用开发视频教程
- iphone/ipad应用的升级更新提醒和评分提醒
- iphone/ipad应用的升级更新提醒和评分提醒
- iphone/ipad应用的升级更新提醒和评分提醒
- iphone/ipad应用的升级更新提醒和评分提醒
- iphone ipad 开发视频教程
- Week summary --iphone/ipad 开发应用培训之二
- 《iOS5编程揭秘-iPhone与iPad应用开发入门》
- iOS 7 iPhone iPad应用开发技术详解
- 新书出版:《iPhone&iPad企业移动应用开发秘籍》
- 新书介绍:iPhone&iPad企业移动应用开发秘籍
- iphone ipad 开发应用内实现多语言自由切换
- iPhone应用移植到iPad
- iphone ipad 设置应用图标
- iPhone应用移植到iPad
- iPhone, iPad升级ios7正式版教程
- iPhone/iPad开发资料大全
- .net面试题及答案1
- 如何创建一个只允许使用sftp登录且只能访问特定目录的账号
- struts2 iterator 标签 详解
- 十四周作业任务一
- di1zhou3
- iPhone/iPad应用开发数据库升级
- 码奴们,给大家推荐个电影网站-大家学影视网
- 谷歌搜索算法更新
- 全球jQuery的UI框架集锦
- 十四周作业任务二
- module_init和module_exit
- 系统架构设计
- How to Install php-mcrypt on CentOS 6.2
- fstream的使用方法介绍