更好的csv或sqlite是否可以将数据预加载到Core数据中?

时间:2013-10-17 23:06:02

标签: iphone ios sqlite core-data csv

我必须将数据预加载到我的核心数据中,以便我的实体始终充满数据,因为有人第一次启动应用程序。我在csv和其他sqlite中有一个数据库。哪个最好?我该怎么办?我的意思是,我想我应该将我的数据库保存在我的应用程序的文件夹中,第一次启动应用程序时,我会将数据填入数据库。不是吗?或者我错了?如果这是好方法?我是怎么做到的

2 个答案:

答案 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更好地映射。如果没有,请使用您认为最方便处理的任何内容。