2010-10-25 10 views
6

Así que creé una nueva versión de mi modelo de datos e hice un campo previamente opcional no opcional (dándole un valor predeterminado). De acuerdo con la documentación, esto debería significar que mi migración es elegible para una migración ligera y automática.Migración ligera de Core Data: no se puede encontrar o se puede deducir automáticamente el modelo de asignación para la migración

También he añadido opciones que permiten esto cuando abra la tienda, también por la documentación:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 

        [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 

        [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; 

Cuando mi aplicación se está iniciando, sin embargo, me sale el siguiente error: "No se puede encontrar o automáticamente inferir el modelo de mapeo para la migración ".

¿Alguien sabe cuál podría ser el problema aquí? Cualquier ayuda es apreciada ... ¡gracias!

+0

¿También debe especificar un valor predeterminado para el atributo si lo hace no opcional? –

+0

No me importa el neg. Me importa que no me digan por qué. Que vergonzoso. –

+0

Ahh, probablemente porque respondí tu pregunta en mi descripción: "darle un valor predeterminado". – elsurudo

Respuesta

1

Usted probablemente ha consultaron este, pero si no ... Detecting a Lightweight Core Data Migration

En cuanto a otro tipo de código de depuración, he encontrado este útil:

NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"MyDataStore.sqlite"]]; 

NSError *error = nil; 
NSDictionary *sourceMetadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:NSSQLiteStoreType 
                   URL:storeUrl 
                   error:&error]; 

if (!sourceMetadata) 
    { 
    DLog(@"sourceMetadata is nil"); 
    } 
else 
    { 
    DLog(@"sourceMetadata is %@", sourceMetadata); 
    } 

Y, por último, se trata de una especie de dolor pero en el Buscador puede "Mostrar Contenido del Paquete" para su aplicación y luego encontrar una carpeta llamada .momd y dentro de ella hay un archivo llamado 'VersionInfo.plist'. Esto ha sido útil para identificar lo que tienes y hacia dónde estás tratando de llegar.

Y, por último, podría tratar de crear un modelo de mapeo y ver si eso funciona. He luchado con problemas de migración durante semanas, de ahí la larga lista de intentos desesperados de depuración.

+0

Acabo de comenzar con el desarrollo de iPhone y me he encontrado con este problema. Probé tu código y muestra algún valor de 'sourceMetadata'. ¿Cómo puedo usar esto para solucionar el problema que estoy teniendo? – vikmalhotra

+0

@ShiVik - eso dependería del problema que está depurando ;-) Si publica una pregunta, intentaré ayudar. En general, sin embargo, esto fue útil para asegurarme que los modelos correctos estaban en uso y que no se habían corrompido inadvertidamente. También ayudó a mi comprensión general de Core Data. – westsider

+0

aquí está mi pregunta http://stackoverflow.com/q/4745886/206613 – vikmalhotra

Cuestiones relacionadas