我必须将数据预加载到我的核心数据中,以便我的实体始终充满数据,因为有人第一次启动应用程序。我在csv和其他sqlite中有一个数据库。哪个最好?我该怎么办?我的意思是,我想我应该将我的数据库保存在我的应用程序的文件夹中,第一次启动应用程序时,我会将数据填入数据库。不是吗?或者我错了?如果这是好方法?我是怎么做到的
答案 0 :(得分:1)
我建议已经映射的CoreData商店。它是否先前已由您的应用程序或Core Data Editor等编辑器映射。
在app delegate中,您可以预加载数据。在- (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");
}
}
答案 1 :(得分:0)
这取决于您拥有的数据类型。真正唯一重要的问题是哪一个更适合您的数据,因为它们可以很好地编写代码来导入数据。
如果您的数据包含具有关系的多种类型的实体,则SQLite将比CSV更好地映射。如果没有,请使用您认为最方便处理的任何内容。