Tengo la aplicación Core Data y he estado migrando (actualizando) el modelo de datos básicos. Cada vez que creo una nueva versión, creo un modelo de mapeo para cada versión. Ahora tengo 16 versiones y tengo modelos de mapeo que van de la siguiente manera: 1to2.xcmappingmodel 2to3.xcmappingmodel 3to4.xcmappingmodel ... etc. hasta 16Migración a través de varias versiones en los datos principales
Esto funciona bien, pero surge un problema cuando un usuario tiene un archivo de datos con la versión 10 y actualiza la aplicación que tiene la versión 16. Algunos pensé que Core Data se actualizará automáticamente de 10 a 16, pero aparece el error que dice "Falta el modelo de mapeo". Para asegurarme de que los modelos de mapeo eran correctos, los actualicé a cada versión uno por uno (10 a 11, 11 a 12, etc.) y funcionó ... Aquí está mi código.
se especifica la versión del modelo con este código:
NSBundle *modelWrapper = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"TaskApp_DataModel" ofType:@"momd"]];
NSString *modelPath = [modelWrapper pathForResource:@"TaskApp_DataModel 16" ofType:@"mom"];
NSLog(@"%@",modelPath);
managedObjectModel = [[NSManagedObjectModel alloc]initWithContentsOfURL:[NSURL fileURLWithPath:modelPath]];
Y defino la opción Migrar automática aquí:
NSURL *url = [NSURL fileURLWithPath: [applicationSupportDirectory stringByAppendingPathComponent: @"storedata-sql"]];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNumber numberWithBool:YES] forKey:NSMigratePersistentStoresAutomaticallyOption];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:url
options:dict
error:&error]){
¿Alguien sabe cómo actualizar esto? Gracias.
Sí gracias ... acabo de encontrar en el libro de Marcus Zarra Core Data ... escribió un gran procedimiento para migrar de cada modelo a otro sin tener que escribir adicional mapeo de modelos. Voy a comprobar NSINfersMappingModel ¡Gracias! –
¡InfersMappingModel funcionó! ¡Gracias! –
intente y mantenga las migraciones de datos al mínimo (es decir, versiones principales) como los gastos generales muy rápidamente (mapeo de modelos de cada versión a la actual para cada cambio). Además, tenga en cuenta que el uso de la migración automática puede funcionar de una versión a otra. , pero su modelo puede cambiar lo suficiente como para que la versión 16 a la 21 sea tan diferente que no pueda calcular la diferencia. ¡Me alegro de que lo arregló! – MCannon