Ahora descubrí que esto es bastante simple, una vez que sepa dónde buscar.
En mi AppDelegate configuré NSPersistentStoreCoordinator, y necesita agregar algunas opciones a esto para decirle que maneje la migración automática:
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSError *error;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
// Handle error
NSLog(@"Problem with PersistentStoreCoordinator: %@",error);
}
Entonces necesitas hacer un pequeño truco en xCode:
- Seleccione su archivo xcdatamodel
- Seleccione el menú Diseño en la parte superior, luego Modelo de datos, luego elija Agregar versión del modelo
- Su archivo xcdatamodel se moverá a un nuevo directorio con el mismo nombre que su archivo xcdatamodel pero con la extensión xcdatamodeld; habrá un segundo archivo en este directorio con un 2 en el nombre. Seleccione el nuevo archivo y luego Diseño-> Modelo de datos-> Establecer versión actual ( en Xcode 4 usted hace esto )
- Si ya ha realizado los cambios que han provocado que su proyecto sea incompatible, elimine estos cambios del archivo xcdatamodel original. Si aún no ha realizado los cambios, simplemente edite el archivo 2.xcdatamodel (el que acaba de hacer en la versión actual).
- Ahora, cuando instale esta versión en un dispositivo que tiene el modelo anterior, actualizará automáticamente ese modelo al nuevo modelo.
Esto parece genial y tan simple como quería, pero creo que debe tener cuidado durante el desarrollo al cambiar un modelo; de lo contrario, tendrá que crear una nueva versión para cada cambio.
Creo que lo que haré es conservar todos los archivos modificados y luego, una vez que esté listo para implementar mi actualización, eliminaré todos los archivos intermedios y simplemente lo implementaré con los modelos más antiguos y más recientes.
ACTUALIZACIÓN (15/07/2011):
Gracias a @ rockstarberlin por señalar que hay documentación actualizada en Apple:
Xcode 4: configuración de la versión actual de un modelo de objetos administrados
Actualización: 19/8/2013 mejor enlace:
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmModelFormat.html