誰かがアプリケーションを初めて起動したときから、エンティティが常にデータでいっぱいになるように、データをコア データにプリロードする必要があります。私はcsvと他のsqliteにデータベースを持っています。どちらがベストか?どうすればいいですか?つまり、データベースを常にアプリのフォルダーに配置し、アプリを初めて起動するときにデータベースにデータを入力する必要があると思います。ではない?または私は間違っていますか?これが良い方法なら?どうすればいいですか?
質問する
613 次
2 に答える
1
既にマップされている CoreData ストアをお勧めします。アプリまたはコア データ エディターなどのエディターによって以前にマップされているかどうか。
アプリ デリゲートでは、データをプリロードできます。で- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
。
現在のストアを削除できます。
NSError *error = nil;
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"CoreDataStore.sqlite"];
[[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error];
また、ストアがまだない場合は、プリロードされたストアを所定の位置に移動できます。
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"CoreDataStore.sqlite"];
if (![[NSFileManager defaultManager] fileExistsAtPath:[storeURL path]]) {
NSURL *preloadURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"PreloadData" ofType:@"sqlite"]];
NSError* err = nil;
if (![[NSFileManager defaultManager] copyItemAtURL:preloadURL toURL:storeURL error:&err]) {
NSLog(@"Oops, couldn't copy preloaded data");
}
}
于 2013-10-17T23:54:27.907 に答える
0
持っているデータの種類によって異なります。本当に重要なのは、データをインポートするためのコードを書くのにどちらがうまく機能するかということだけです。
データに関係を持つ複数のタイプのエンティティが含まれている場合、SQLite は CSV よりも適切にマッピングします。そうでない場合は、個人的に最も扱いやすいと思われるものを使用してください。
于 2013-10-18T00:19:26.593 に答える