我正在处理一个旧的iOS应用程序,该应用程序具有应用程序数据库,即预先填充的数据库提供给应用程序,以便应用程序可以读取(仅读取),现在在更新版本中,只更新表中的信息(表格相同) )。 当我测试新数据库时,我必须从设备中删除应用程序以获取新数据,否则我会获得旧数据。
所以我的问题是,如果用户从App Store更新应用程序,如何从旧数据迁移到新数据?
我已经浏览了this和this SO帖子,但这些帖子是关于更改表格,但我只想更新我的记录。
编辑: - 如果我在使用新数据库文件名在文档目录中搜索时更改数据库文件名,它会不会这样做?这是我的代码 -
- (void) copyDatabase {
//Using NSFileManager we can perform many file system operations.
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
dbPath = [self getDBPath];
BOOL success = [fileManager fileExistsAtPath:dbPath];
if(!success) {
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"mydb1.1"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error];
if (!success)
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
}
- (NSString *) getDBPath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:@"mydb1.1"];
}
“mydb1.1”是新文件名。