管理iOS应用程序和数据库更新的最佳方式

管理iOS应用程序和数据库更新的最佳方式,ios,database,sqlite,app-store,updates,Ios,Database,Sqlite,App Store,Updates,我正在开发一个iOS应用程序,它直接使用sqlite数据库,而不使用核心数据。我在一个文件中定义了数据库的表,在我第一次需要它时,我读取该文件将数据库复制到文档中 我担心一旦应用程序提交,数据库表中的应用程序更新发生变化,就会在应用程序商店中发布应用程序更新。我在另一篇帖子中问到如何处理这个数据库更新,我被告知继续的方法是上传一个应用程序版本,删除以前的数据库,并用另一个名称将新数据库复制到文档中。我这样做了,但我仍然不确定管理这个问题的适当方式应该是什么。我是说,我现在是这样做的: - (vo

我正在开发一个iOS应用程序,它直接使用
sqlite
数据库,而不使用
核心数据。我在一个文件中定义了数据库的表,在我第一次需要它时,我读取该文件将数据库复制到
文档中

我担心一旦应用程序提交,数据库表中的应用程序更新发生变化,就会在应用程序商店中发布应用程序更新。我在另一篇帖子中问到如何处理这个数据库更新,我被告知继续的方法是上传一个应用程序版本,删除以前的数据库,并用另一个名称将新数据库复制到
文档中。我这样做了,但我仍然不确定管理这个问题的适当方式应该是什么。我是说,我现在是这样做的:

- (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中更新应用程序版本时管理数据库更新是一种常见的情况,那么有人能告诉我正确的管理方法是什么吗?我不完全理解应用程序更新提交的工作原理,这将是我的第一次提交


非常感谢

是的,当您更新应用程序时,NSUserDefault将保留。例如,如果您有一个FB应用程序,您的登录名和密码不会在每次更新应用程序时被删除。@JohnDoe谢谢,所以。。。我的代码是否足以确保在安装应用程序更新时正确更新数据库?很抱歉,我无法回答这个问题,但我可以说,我非常确定在更新应用程序时保留本地存储文件,例如图像,甚至数据库文件。快速查看您的代码,我发现您正在检查NSUserDefaults,以了解是否在第一次午餐期间创建了db,然后如果db已经存在,您就不会创建它,对吗?如果是这样的话,我95%肯定你的思路是正确的。@JohnDoe谢谢。与此相关的一个问题:如果我更新数据库文件是因为,比方说,我添加/修改了它的表,但我不想将以前数据库的数据复制到新数据库中,那么是否需要重命名新数据库文件,删除以前的数据库,然后复制最新的数据库?或者仅仅从
文档中删除以前的数据库并复制保持相同文件名的新数据库就足够了吗?