есть способ, и этот способ называется автоматической облегченной миграцией. Для изменения объектной модели требуется изменение кода и дополнительный шаг.
Для кода вы должны добавить два варианта метода, в котором вы инициализируете своего постоянного координатора хранилища. что-то вроде этого:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator_ != nil) {
return persistentStoreCoordinator_;
}
NSString *storePath = [AppDelegate_Shared coredataDatabasePath];
NSURL *storeURL = [NSURL fileURLWithPath:storePath];
// important part starts here
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
nil];
NSError *error = nil;
persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
// and ends here
LogError(@"Unresolved error %@, %@", error, [error userInfo]);
// Do something
}
return persistentStoreCoordinator_;
}
Теперь, если вы хотите изменить свою модель, вам необходимо создать версию модели перед внесением любых изменений.
Выберите свой датамодель и войдите в главное меню Design -> Data Model -> Add Model Version
. Ваша «старая» модель будет переименована, и вы внесете изменения в текущую модель, с зеленой меткой.
Все старые модели хранятся и будут помещены в ваше приложение, поэтому ваше приложение может выполнять «автоматическую легкую миграцию» и обновлять существующую базу данных до новой модели.
Спасибо. Я добавил ваш код в свое программное обеспечение, но я уже изменил свою базу данных и очистил его, поэтому я не смог проверить его так тщательно, как хотелось бы, но похоже, что он будет работать. – iphaaw
Да, я могу подтвердить, что это работает. Я добавил еще одно поле, и моя база данных все еще работает. Благодарю. – iphaaw
Вы знаете, как вернуть это действие (добавив версию модели)? –