У меня есть приложение, которое использует довольно большую базу данных с приблизительно 3.000 записями. Раньше я загрузил базу данных при запуске приложения в первый раз, но с количеством записей, которые у меня есть сейчас, я реализую предварительно заполненную базу данных, чтобы сэкономить время.Обновление приложения, которое включает в себя предварительно заполненную базу данных
Мой вопрос заключается в том, что происходит при обновлении приложения, начиная с appstore, до устройства будет знать, что есть обновленная версия базы данных и загрузка новой базы данных или продолжение использования базы данных, которая уже активна с приложение?
Я использую этот код в моем приложении, чтобы использовать предварительно заполненные Core Data DB:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator != nil) {
return persistentStoreCoordinator;
}
NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"database.sqlite"];
/*
Set up the store.
For the sake of illustration, provide a pre-populated default store.
*/
NSFileManager *fileManager = [NSFileManager defaultManager];
// If the expected store doesn't exist, copy the default store.
if (![fileManager fileExistsAtPath:storePath]) {
NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"database" ofType:@"sqlite"];
if (defaultStorePath) {
[fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
}
}
NSURL *storeUrl = [NSURL fileURLWithPath:storePath];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
NSError *error;
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
// Update to handle the error appropriately.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1); // Fail
}
return persistentStoreCoordinator;
}
Если ваша структура базы данных Core Data изменилась, вам может потребоваться расследование переноса данных с базовыми данными. В противном случае, как ваше приложение обрабатывает существующую базу данных полностью под вашим контролем. –