1

データストアが設定された AppStore でアクティブなアプリを持っています。今、少し更新されたスキーマと新しいデータ セットを含む新しいバージョンをプッシュしたいと考えています。古いデータは関係ありません。アプリの新しいバージョンを単純にプッシュすると、既存のユーザーは互換性のないデータストアでエラーが発生すると思います...どうすればこれを回避できますか? 既存のデータを移行する必要はありません。すべて新しいアプリに含まれています。

編集

参考までに、オブジェクト マネージャーで永続ストアをロードしている URL は次のとおりです。

NSURL *storeURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"MyObjects" ofType:@"storedata"]];
4

1 に答える 1

1

編集:

永続ストアをメインバンドルに保存する場合(したがって読み取り専用)、新しい永続ストア(アプリバンドルにも含まれていると思います)が古いものを単純に上書きするため、心配する必要はありません。

既存のストアファイルを削除してから、新しいストアファイルを作成する必要があると思います。

がストアファイルへのパスである場合_storeURL、次のように削除できます。

NSError *error = nil;
if ([fileManager fileExistsAtPath:_storeURL.path])
  [fileManager removeItemAtURL:_storeURL error:&error];

もちろん、これは最新のアプリバージョンの最初の起動時にのみ実行する必要があります。これはNSUserDefaults、ストアを削除/再作成した後にキーを保存し、起動時にキーがない場合にのみプログラムに削除/作成を実行させることで実現できます。

于 2012-10-18T19:18:38.883 に答える