我正在使用Core Data在Mac上创建一个SQLite文件,然后将其放入我的iPhone应用程序(GitHub project,如果好奇的话)。我想使用更新的SQLite文件发布应用程序更新。该模型将是相同的实体和属性,只会有更多的数据。
我使用旧的sqlite文件在模拟器中运行应用程序。出口。用xcode中的新文件替换sqlite文件。将NSMigratePersistentStoresAutomaticallyOption和NSInferMappingModelAutomaticallyOption添加到addPeristentStore选项。然后再次运行应用程序,但应用程序仅显示原始文件中的相同数据。
我还尝试按照Apple文档和此SO post对模型进行版本控制,并重命名sqlite文件。但仍然没有运气(我猜是因为模型仍然相同?)。
关于如何让应用程序读取更新的sqlite文件的任何想法?
答案 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]) {