同意します。コア データを使用して古いデータベースに接続し、データを引き出してから新しいデータベースに移動する必要があると思います。完了したら、次のような方法で古いデータベース ファイルを削除する必要があります (注: コア データの結果を SQLite に保存していると想定しています)。
- (NSURL *)urlForDocumentsDirectoryWithFile:(NSString *)fileName {
NSURL *docPath = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
return [docPath URLByAppendingPathComponent:fileName];
}
- (void)deleteFileFromDocumentsIfExists:(NSString *)fileName {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSURL *filePath = [self urlForDocumentsDirectoryWithFile:fileName];
NSLog(@"Deleting file: %@", filePath.absoluteString);
if ([fileManager fileExistsAtPath:[filePath path]])
{
BOOL success = [fileManager removeItemAtURL:filePath error:&error];
if (!success) NSLog(@"Error: %@", [error localizedDescription]);
}
}
削除コード:
[self deleteFileFromDocumentsIfExists:@"MyOldDatabaseName.sqlite"];
古いモデルを 1 回しか使用しない場合は、2 つのオブジェクト モデルを使用することについて心配する必要はありません。アプリで「一度だけ使用した」コードを使用するのが無駄であることはわかりますが、Core Data をスキップして手動でクエリを実行する場合でも、これが必要です。
また、コア データのばかげた初期化コードをすべてダンプする DataAccessManager ユニットがあるので、複数のコンテキストに簡単にアクセスできます。共有可能なユニット。