在应用程序中替换Core Data SQLite文件

时间:2009-10-08 02:33:14

标签: iphone sqlite core-data

我正在使用Core Data在Mac上创建一个SQLite文件,然后将其放入我的iPhone应用程序(GitHub project,如果好奇的话)。我想使用更新的SQLite文件发布应用程序更新。该模型将是相同的实体和属性,只会有更多的数据。

我使用旧的sqlite文件在模拟器中运行应用程序。出口。用xcode中的新文件替换sqlite文件。将NSMigratePersistentStoresAutomaticallyOption和NSInferMappingModelAutomaticallyOption添加到addPeristentStore选项。然后再次运行应用程序,但应用程序仅显示原始文件中的相同数据。

我还尝试按照Apple文档和此SO post对模型进行版本控制,并重命名sqlite文件。但仍然没有运气(我猜是因为模型仍然相同?)。

关于如何让应用程序读取更新的sqlite文件的任何想法?

1 个答案:

答案 0 :(得分:3)

我的核心数据iPhone应用程序使用创建项目时提供的标准代码,并选择“使用核心数据进行存储”。 当我更改文件名常量“DB_NAME”的值并重建时,它将切换使用的SQLite数据库:

NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent:DB_NAME]];

NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) {