私はアプリケーションの更新に取り組んでいます。私はアプリケーションを最初から書き直し、モデルを制御するために魔法の記録に切り替えました。私の問題は次のとおりです。
- 「foo」という名前のエンティティを含む新しい「newdatabase.xcdatamodel」ファイルを作成しました。
- アプリの最初のリリースでは、「foo」という名前のエンティティも含まれる「olddatabase.xcdatamodel」もありました。
- ユーザーがアプリケーションを最初からインストールする場合、問題はありません。
- ユーザーが以前のバージョンのアプリを使用している場合、そのデバイスには「olddatabase.mom」ファイルがあり、このファイルには古い「foo」エンティティも含まれているため、ご想像のとおり、アプリケーションは次のエラーでクラッシュしました。
'foo''という名前の2つの異なるエンティティを持つモデルをマージできません
では、新しいmomファイルをロードする前に、古い「olddatabase.mom」ファイルを検出して削除することは可能ですか?
私は次のコードを試しましたが、思ったとおり、そのフォルダーに対する権限がありません:)
NSString *path = [[NSBundle mainBundle]pathForResource:@"olddatabase" ofType:@"mom"];
if(path){
NSError* error = nil;
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager removeItemAtPath:path error:&error];
if(error)
NSLog(@"Error: %@",[error description]);
}
NSLog(@"path = %@",path);
新しい「foo」エンティティ名を「foo2」などに変更することを考え始めていますが、使用するものに適切な名前を使用することに夢中になっているので、方法があるかどうかを知ってうれしいです。それ。
読んで(おそらく)応答してくれてありがとう:)