我正在开发一个直接使用sqlite
数据库的iOS应用,而不使用Core Data
。我在我第一次需要时将数据库复制到Documents
的文件中定义了数据库的表。
当这些更新在数据库表中发生更改时,我担心一旦应用程序提交,就会在App Store中发布应用程序更新。我问过如何在另一篇文章中处理这个数据库更新,我被告知继续进行的方法是上传删除以前数据库的应用程序版本,并将新数据库复制到另一个名称的Documents
。我这样做,但我仍然不确定管理这个问题的适当方法应该是什么。我的意思是,我现在正在这样做:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Database
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults boolForKey:@"firstLaunch"] == 0) {
dispatch_queue_t queue = dispatch_queue_create(DatabaseQueue, NULL);
dispatch_async(queue,^{
[self replaceDatabase:@"former_database.sqlite" withDatabase:@"new_database.sqlite"];
[self doDataInsertions];
[defaults setBool:1 forKey:@"firstLaunch"];
});
dispatch_release(queue);
}
}
但我不知道当用户下载并安装更新时这是否会起作用。安装更新时,NSUserDefaults
中的值是否保留?我想这个场景,在App Store中更新应用程序版本时管理数据库更新是一个常见的场景,所以有人可以澄清一下管理它的正确方法是什么?我不完全理解应用程序如何更新提交内容的工作,这将是我的第一次提交。
非常感谢