我正在开发一个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 中更新应用程序版本时管理数据库更新,是一种常见的情况,所以有人可以澄清我管理这个的正确方法是什么?我不完全了解应用程序更新提交的工作原理,这将是我的第一次提交。
非常感谢