2010-07-13 12 views
5

Tengo dos modelos en mi proyecto, quiero permitir versiones para uno de ellos. Esto es lo que hice:iPhone Core Migración de datos con múltiples modelos

  • Seleccioné el modeloOne.xcdatamodel luego Design> Data Model> Add Model Version.
  • comando + i hecho clic a continuación, añadir la versión a modelOne.xcdatamodel dentro modelOne.xcdatamodeld
  • Modificado modelOne.xcdatamodel, acaba de añadir algún atributo.
  • En el delegado que añade las opciones de diccionario para la NSPersistentStoreCoordinator, y tengo la NSManagedObjectModel mediante la fusión de los dos modelos como:

    NSString *path1 = [[NSBundle mainBundle] pathForResource:@"modelOne" ofType:@"momd"]; 
    NSURL *momURL1 = [NSURL fileURLWithPath:path1]; 
    NSManagedObjectModel *modelOne = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL1]; NSString *path2 = [[NSBundle mainBundle] pathForResource:@"modelTwo" ofType:@"mom"]; 
    
    NSURL *momURL2 = [NSURL fileURLWithPath:path2]; 
    NSManagedObjectModel *modelTwo = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL2];  
    
    
    NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel modelByMergingModels:[NSArray arrayWithObjects:modelOne, modelTwo, nil]]; 
    
  • pasado hice una limpieza y construcción, que ha obtenido un error acerca de 'Can no encuentra el modelo para la tienda de origen '.

¿Alguna idea de cómo podría solucionar esto? (Nota: si uso mergedModelFromBundles, tengo otro error sobre 'No se pueden fusionar modelos con dos entidades diferentes llamadas Entity1'

+1

Tengo el mismo Problema: ¿lo resolvió? – Jeff

Respuesta

-2

Tuve un problema similar. Resultó que el antiguo archivo de modelo compilado .mom todavía estaba en el paquete de la aplicación en el simulador. Aparentemente, cuando limpia un proyecto no borra el paquete de la aplicación en el simulador. Eliminar manualmente la aplicación del simulador y luego limpiarla antes de volver a construir resuelve el problema.

+4

La eliminación manual de la aplicación hace que la migración no tenga que ejecutarse, por lo que no verá el error anterior en este caso. – Mark

Cuestiones relacionadas