データのインポートとエクスポートに適した Core Data モデルがあります。私のアプリが動作する方法は、JSON ファイルをデータベースからダウンロードして解析し、コア データ モデルをフラッシュしてから、データを再度追加することです (事実上、ローカル データ モデルを更新します)。
データベースに変更を加えると、その変更は JSON ファイルに反映されますが、アプリを再起動する (つまり、アプリを終了して再度開く) まで、コア データ モデルには反映されません。
データベースをフラッシュする方法と関係があるに違いないと確信していますが、指を置くことはできません。役立つコードを以下にいくつか含めました。
データモデルをフラッシュするために使用している方法:
- (void)resetCoreData;
{
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"AppWithCoreData.sqlite"];
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager removeItemAtURL:storeURL error:NULL];
NSError* error = nil;
if([fileManager fileExistsAtPath:[NSString stringWithContentsOfURL:storeURL encoding:NSASCIIStringEncoding error:&error]])
{
[fileManager removeItemAtURL:storeURL error:nil];
}
persistentStoreCoordinator = nil;
managedObjectContext = nil;
[self managedObjectContext]; // Rebuild Object Context
}
データ モデルにデータを追加するために使用しているコードの 1 行:
[model setValue:[dictionary objectForKey:@"eventID"] forKey:@"eventID"];