jeudi 12 février 2015

Prepopulated sqlite file in the app bundle. What happens after the existing users update?

I have an app on the store which points to the appname.sqlite file in the document directory.Here's the old code:



NSURL *storeURL = [[self applicationDocumentsDirectory]URLByAppendingPathComponent:@"MyApp.sqlite"];

NSError *error = nil;

_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:@{NSMigratePersistentStoresAutomaticallyOption : @YES,NSInferMappingModelAutomaticallyOption : @YES}; error:&error]) {

abort();
}


I now want to give an update. The new feature being a prefilled .sqlite database which is there in the bundle.See the following



NSURL *storeURL = [NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource:@"MyNewPrefilled" ofType:@"sqlite"]];


It would work ok on the fresh installation the app.But what happens to the users who have logged in and have a lot of data saved in the db (old sqlite in the app directory)? I would lose it because I now am pointing to the .sqlite in the app bundle (MyNewPrefilled.sqlite) and not the app directory one. How do I get the old data back from the old sqlite file of doc directory to my new one in the bundle?


FYI: I use code data migration already (involving version numbers in datamodels) which works ok when i change datamodel in updates.


Aucun commentaire:

Enregistrer un commentaire