Datos principales: error al cargar el modelo optimizado en la ruta

Estoy obteniendo algunas de estas impresiones en mi consola mientras ejecuto mi aplicación desde Xcode 6 en mi iPhone 6 con iOS 9 beta 5:

CoreData: Error al cargar el modelo optimizado en la ruta ‘/var/mobile/Containers/Bundle/Application/0000000B-BDBC-0000-000B-0000FB00000B/Distribution.app/database.momd/database.omo’

No encuentro algo relacionado con esto, ¿alguien tiene alguna pista sobre este mensaje?

Me he encontrado con este problema e investigué un poco.

He estado comstackndo con Xcode 6.4 y parece que anteriormente los datos centrales solo producían un archivo .mom en el directorio de inicio de MiApp.ipa. Esta captura de pantalla es de un proyecto que ha visto varias versiones de Xcode.

Observe que todas las versiones anteriores del modelo solo tienen un archivo .mom. Acabo de crear una nueva versión de modelo hoy y tiene un archivo .mom y un archivo .omo.

enter image description here

Parece que Xcode 6.4 (y tal vez algunas de las versiones beta 7.x también) no saben cómo cargar la versión optimizada del modelo de datos porque también obtengo el

2015-10-16 11:11:42.563 MyAppName[1767:599635] CoreData: Failed to load optimized model at path '/var/mobile/Containers/Bundle/Application/D887D60B-FB28-4059-8167-F573460D98F8/MyAppName.app/MyDataModel.momd/MyDataModel3_0Analytics.omo' 

advertencia al comstackr con 6.4. Sin embargo, al comstackr la aplicación con la última versión de la tienda de aplicaciones de Xcode (7.0.1) no recibo esa advertencia. Supongo que la razón por la que la solución de Mahesh está funcionando es porque volver a escribir todo el esquema crea el archivo .omo que la aplicación está buscando en el paquete de la aplicación.

La solución para mí fue generar una nueva versión del modelo de datos en Core Data y luego comstackr con Xcode 7. Parece que la creación de una nueva versión de modelo crea el archivo de modelo optimizado. Sin embargo, en mi prueba, incluso con este archivo creado, Xcode 6.4 aún arroja el error. No fue hasta que lo intenté con Xcode 7.0.1 que la advertencia desapareció.

Esto es una especulación, pero creo que si tiene un proyecto existente y no ha creado una nueva versión de modelo de datos y comstack con Xcode 7 que el archivo .omo no se encuentra, entonces lanza la advertencia porque no puede encontrar el archivo. Sin embargo, si ha versionado su modelo de datos y comstackdo con Xcode 6.4, parece que la versión anterior de Xcode no hace algo correctamente con la versión optimizada y no la carga, incluso si está allí. Sin embargo, estas son solo mis observaciones.

Verifiqué que tenía un modelo optimizado (archivo .omo) para cargar haciendo lo siguiente: 1. archive su proyecto 2. cambie la extensión .ipa a .zip 3. expanda su archivo zip 4. haga clic en la carpeta “carga útil” y haga clic con el botón derecho (o haga clic con el botón derecho) en el paquete de la aplicación en la carpeta y seleccione “Mostrar contenido del paquete”. 5. haga clic en el directorio .momd, debería ver allí todos sus modelos de objetos gestionados disponibles.

Si todo lo que tiene son archivos .mom y no archivos .omo, entonces la advertencia tiene mucho sentido, la aplicación no puede abrir un archivo que no existe.

En mi prueba, parece que la advertencia fue solo informativa. Nunca tuve ningún accidente por eso. Parece que los datos centrales pueden intentar cargar primero el modelo optimizado y, si eso falla, volver al modelo .momd normal. Sin embargo, esto es solo mi especulación.

No estoy seguro de si todo aquí es completamente correcto, esto es lo que he observado hasta ahora al tratar de depurar esto. Si alguien más puede contribuir con más información, doy la bienvenida a su aporte.

Me encontré con este problema esta mañana. Hice un pequeño truco para hacerlo funcionar. Creo que tiene algo que ver con el desajuste de versiones, pero no estoy seguro.

De todos modos, si está cargando un archivo momd, simplemente agregue un “/[nombre de archivo].mom” al NSURL para que funcione.

En mi caso, estaba cargando el archivo Countly.momd y terminé haciendo esto:

 // Original loading NSURL modelURL = [[NSBundle bundleForClass:[CountlyDB class]] URLForResource:@"Countly" withExtension:@"momd"]; // Small hack modelURL = [modelURL URLByAppendingPathComponent:@"Countly.mom"]; 

Actualización: estaba usando un POD que usaba CoreData. La eliminación del pod y la adición de la fuente, etc. desde el repository, hicieron que el problema desapareciera.

Entonces podría ser un problema de pod.

Encontré una solución para esto. Reescribí todo el esquema, y ​​cuando ejecuto el código me deshice de esas advertencias de los datos centrales.

Te sugiero que tomes una copia de seguridad antes de intentar esto.

Espero que te ayude

Quiero responder a las personas que se encontraron con esto cuando escribía un pod propio con sus propios modelos de CoreData. Probablemente, has puesto la definición de tu modelo en el paquete (eso es bueno), pero buscas el archivo momd en el paquete incorrecto.

Supongamos que ha definido su paquete en podspec de esta manera:

 'MYPodBundle' => [ 'Model/*.{xcdatamodeld,xcdatamodel}' ] 

Entonces primero deberías encontrar este paquete y luego ubicar tu modelo dentro de él .

 NSURL *bundleURL = [[NSBundle bundleForClass:[MYEntity class]] URLForResource:@"MYPodBundle" withExtension:@"bundle"]; NSBundle *bundle = [NSBundle bundleWithURL:bundleURL]; NSString *modelPath = [bundle pathForResource:@"MYCoreDataModel" ofType:@"momd"]; NSManagedObjectModel *managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:[NSURL fileURLWithPath:modelPath]]; 

Entonces puedes continuar creando la stack CoreData.

// Esto puede ser un poco offtopic porque no estabas escribiendo pod propio, pero tu respuesta está en la parte superior de google.