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でアプリのバージョンを更新するときにデータベースの更新を管理するというこのシナリオは一般的なものだと思いますので、誰かがこれを管理する正しい方法を教えてもらえますか? アプリのアップデートの提出がどのように機能するか完全には理解していません。これが私の最初の提出になります。
本当にありがとう