ios objective-c xcode core-data ios9

ios - Datos principales: no se pudo cargar el modelo optimizado en la ruta



objective-c xcode (4)

Encontré una solución para esto. Reescribí todo el esquema y, cuando ejecuté el código, eliminé esas advertencias de los datos principales.

Le sugiero que haga una copia de seguridad antes de intentar esto.

Espero que te ayude.

Recibo 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 puedo encontrar algo relacionado con esto, ¿alguien tiene alguna pista sobre este mensaje?


Me encontré con este problema esta mañana. Hice un pequeño truco para que funcione. 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 "/[filenamefont>.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. Eliminar el pod y agregar la fuente, etc. del repositorio directamente hizo que el problema desapareciera.

Por lo tanto, podría ser un problema de pod.


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

He estado compilando con Xcode 6.4 y parece que anteriormente los datos principales solo producían un archivo .mom en el directorio myApp.ipa momd. 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 del modelo hoy y tiene un archivo .mom y un archivo .omo.

Parece que Xcode 6.4 (y quizás también algunas de las versiones beta 7.x) 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 compilar con 6.4. Sin embargo, al compilar la aplicación con la última versión de Xcode (7.0.1) de la tienda de aplicaciones, no recibo esa advertencia. Supongo que la razón por la que la solución de Mahesh está funcionando es porque reescribir todo el esquema crea el archivo .omo que la aplicación está buscando en el paquete de aplicaciones.

La solución para mí fue generar una nueva versión del modelo de datos en los datos centrales y luego construir con Xcode 7. Parece que la creación de una nueva versión del modelo crea el archivo del modelo optimizado. Sin embargo, en mis pruebas, incluso con este archivo creado, Xcode 6.4 todavía arroja el error. No fue hasta que lo probé con Xcode 7.0.1 que la advertencia desapareció.

Esto es especulación, pero creo que si tiene un proyecto existente y no ha creado una nueva versión del modelo de datos y construye con Xcode 7 que falta el archivo .omo, por lo que arroja la advertencia porque no puede encontrar el archivo. Sin embargo, si ha versionado su modelo de datos y compilado 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 "payload" y haga clic derecho (o cmd click) 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 todos sus modelos de objetos administrados disponibles allí.

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

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

No estoy seguro de si todo aquí es completamente correcto, esto es justo lo que he observado hasta ahora al tratar de depurar esto. Si alguien más puede aportar más información, agradezco su aporte.


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

Digamos que ha definido su paquete en podspec así:

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

Luego, primero debe encontrar este paquete y luego ubicar su 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]];

Para que pueda continuar creando la pila CoreData.

// Esto puede ser un poco extraño porque no estabas escribiendo tu propio pod, pero tu respuesta está en la cima de google.