Вы, вероятно, должны получить копию книги основных данных Маркуса Зарры и прочитать о миграции (гл. 5). Но, если это не удастся, есть некоторые основы, которые полезно знать. Во-первых, в обновленном приложении вам нужна как старая модель (схема), так и новая модель. Во-вторых, вам нужно убедиться, что новая модель помечена как «текущая модель». В-третьих, вам нужно убедиться, что вы создаете свой NSPersistentStoreCoordinator таким образом, чтобы он автоматически отображался из существующей модели (загруженной с диска) в новую модель.
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (persistentStoreCoordinator)
return persistentStoreCoordinator;
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"MyDataStore.sqlite"]];
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
// Use mapping model
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, nil];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeUrl
options:options
error:&error])
{
[NSApp presentError:error];
}
return persistentStoreCoordinator;
}
Обновление
Ваша старая модель в вашем новом приложении должна быть точно такой же, как модель в вашем старом приложении. Если вы не уверены, что это так, то есть некоторые шаги, которые вы можете предпринять, чтобы убедиться. То, как я это делаю, немного сложное, но я обрисую это, если / когда вы думаете, что это будет полезно.