Пропуск болезненной миграции с Core Data и переход к новой модели данных - PullRequest
2 голосов
/ 03 марта 2012

Я трачу много времени на массирование основных данных в новую миграцию, когда мне даже не нужны старые данные.Вместо того, чтобы справляться с хлопотами моделей отображения каждый раз, когда я меняю модель данных, есть ли способ просто удалить все существующие данные и перейти к новой модели данных?

1 Ответ

5 голосов
/ 03 марта 2012

Да, просто удалите файл магазина и создайте его заново.Я часто (по крайней мере, в разработке) заставляю мой код пробовать автоматическую миграцию, и, если это не удается, сдуть магазин и начать все сначала:

// storefile is an NSURL to the store file, mom is the NSManagedObjectModel
NSError *err = nil;
NSPersistentStoreCoordinator *psc = [[[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom] autorelease];
[psc addPersistentStoreWithType:NSSQLiteStoreType
                  configuration:nil
                            URL:storefile
                        options:[NSDictionary dictionaryWithObjectsAndKeys:
                                 [NSNumber numberWithBool:YES],
                                 NSMigratePersistentStoresAutomaticallyOption,
                                 [NSNumber numberWithBool:YES],
                                 NSInferMappingModelAutomaticallyOption,
                                 nil]
                          error:&err];
if (err) // could be more specific about testing this error
{ // assume automigration failed, blow away the store and try again
  err = nil; // log it first!
  [[NSFileManager defaultManager] removeItemAtURL:storefile
                                            error:nil];
  [psc addPersistentStoreWithType:NSSQLiteStoreType
                    configuration:nil
                              URL:storefile
                          options:nil
                            error:&err];
}
// then test err again and give up if there's still a problem
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...