Creé un modelo de Core Data en xcode 3.2 y después de actualizar en Xcode 4.2, luego agregué una nueva entidad de la subclase NSManagedObject (consulte la nueva entidad).
Lo primero, se ve raro porque no está en el mismo grupo que el anterior. Aquí está la imagen en mi xcode 4.2 (AlkitabDB es el que creé en xcode 3.2, EndeDB es el nuevo de la versión actual de xcode (4.2):
En segundo lugar, lo dejé como está, luego accedí a la segunda entidad (la nueva) de la misma manera que la primera entidad (la antigua), y aparece el error como se titula.
Aquí está el error:
2012-01-16 21:13:38.496 iHuria[55953:207] Unresolved error Error Domain=NSCocoaErrorDomain Code=134100 "The operation couldn’t be completed. (Cocoa error 134100.)" UserInfo=0x8829cd0 {metadata=<CFBasicHash 0x882a370 [0x1839b38]>{type = immutable dict, count = 7,
entries =>
2 : <CFString 0x8829b90 [0x1839b38]>{contents = "NSStoreModelVersionIdentifiers"} = <CFArray 0x8829ff0 [0x1839b38]>{type = immutable, count = 0, values = ()}
4 : <CFString 0x8829bc0 [0x1839b38]>{contents = "NSPersistenceFrameworkVersion"} = <CFNumber 0x8829770 [0x1839b38]>{value = +320, type = kCFNumberSInt64Type}
6 : <CFString 0x8829bf0 [0x1839b38]>{contents = "NSStoreModelVersionHashes"} = <CFBasicHash 0x882a080 [0x1839b38]>{type = immutable dict, count = 1,
entries =>
0 : <CFString 0x882a010 [0x1839b38]>{contents = "AlkitabDB"} = <CFData 0x882a030 [0x1839b38]>{length = 32, capacity = 32, bytes = 0xd02ac5f8be6ab0b39add450aca202ac0 ... 3d45d462998d2ccd}
}
7 : <CFString 0x10e3aa8 [0x1839b38]>{contents = "NSStoreUUID"} = <CFString 0x8829e60 [0x1839b38]>{contents = "4F2EE7FF-463B-4055-BBED-8E603CDBDF59"}
8 : <CFString 0x10e3948 [0x1839b38]>{contents = "NSStoreType"} = <CFString 0x10e3958 [0x1839b38]>{contents = "SQLite"}
9 : <CFString 0x8829c40 [0x1839b38]>{contents = "NSStoreModelVersionHashesVersion"} = <CFNumber 0x6b1c7c0 [0x1839b38]>{value = +3, type = kCFNumberSInt32Type}
10 : <CFString 0x8829c70 [0x1839b38]>{contents = "_NSAutoVacuumLevel"} = <CFString 0x882a0c0 [0x1839b38]>{contents = "2"}
}
, reason=The model used to open the store is incompatible with the one used to create the store}, {
metadata = {
NSPersistenceFrameworkVersion = 320;
NSStoreModelVersionHashes = {
AlkitabDB = <d02ac5f8 be6ab0b3 9add450a ca202ac0 ebd1e860 cbb578c2 3d45d462 998d2ccd>;
};
NSStoreModelVersionHashesVersion = 3;
NSStoreModelVersionIdentifiers = (
);
NSStoreType = SQLite;
NSStoreUUID = "4F2EE7FF-463B-4055-BBED-8E603CDBDF59";
"_NSAutoVacuumLevel" = 2;
};
reason = "The model used to open the store is incompatible with the one used to create the store";
}
Busqué la solución antes y descubrí que debería eliminar la aplicación del simulador y volver a ejecutar la aplicación, y no funcionó. ¿Alguien sabe una solución para este problema? Por favor ayuda.
let options = [ NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption:true ]
Elimina la aplicación del simulador y realiza una limpieza en tu proyecto. Eso debería aclarar esos problemas. Asegúrese de no estar ejecutando en el depurador cuando elimine la aplicación o de lo contrario no la eliminará correctamente.
Si desea asegurarse de que se haya ido, consulte este directorio
Users/INSERT_YOUR_USER_HERE/Library/Application Support/iPhone Simulator/
para la carpeta de su aplicación, en la versión que está ejecutando.Nota: Esto es solo para desarrollo. Para la producción, debe implementar algún tipo de migración. Google "Core Data Migration", siendo la migración ligera la más simple.
fuente
Simplemente agregue el atributo Opciones mientras crea persistentStoreCoordinator en el archivo AppDelegate.m para el método de datos básicos como se muestra a continuación
C OBJETIVO
RÁPIDO
Había resuelto mi problema ...
fuente
Respuesta: elimine la aplicación del simulador, realice una limpieza y reconstruya su proyecto.
Nota: cada vez que realice cambios en la definición de Core Data, elimine la aplicación instalada en el dispositivo físico o simulador, limpie el proyecto y vuelva a compilar.
fuente
Si. Una vez que elimine la aplicación en el dispositivo físico y la reconstruya, funciona.
fuente
Para swift, en AppDelegate.swift encuentre la línea
y reemplazarlo con
fuente
Acabo de pasar varios días combatiendo este error, así como los bloqueos fusionados de ModelFromBundles y obteniendo el error "No se pueden fusionar modelos con dos entidades diferentes llamadas *".
Resulta que el problema raíz era que Xcode no elimina los recursos antiguos de los dispositivos y tenía versiones antiguas de mi modelo de datos (archivos .mom) que causaban conflictos. Es por eso que eliminar la aplicación solucionó el problema en uno de mis dispositivos.
Después de encontrar esta publicación de blog a través de otra respuesta SO, hice que mi aplicación sea más tolerante con los modelos antiguos al cambiar esta línea que busca TODOS los archivos .mom:
a esto, que solo se ve en el directorio de Filtros:
Utilicé recursivePathsForResourcesOfType de esta pregunta : para ayudar a resolver esto al registrar todos los archivos .mom en la aplicación:
También utilicé iExplorer para ver los archivos .mom extraños (aún no intenté eliminarlos).
El siguiente método también fue útil. Mostró que una entidad estaba en el modelo combinado devuelto por [psc managedObjectModel] que ya no existía en ninguno de mis modelos o en la tienda misma. Esto fue lo que me permitió creer que un modelo antiguo estaba siendo almacenado en caché en el dispositivo que el edificio limpio no eliminó. El método registra cada entidad que es la misma, se ha cambiado, agregado o eliminado del modelo. (escrito con esta respuesta SO como punto de partida):
uso: llamado antes de agregar cada tienda a NSPersistentStoreCoordinator:
fuente
Cada vez que realice un cambio en la definición de Fecha de núcleo, debe eliminar las aplicaciones instaladas en el dispositivo físico o simulador.
fuente
Product
->Clean
fuente
La solución más simple que funcionó para mí en Swift 2.1, Xcode 7 es:
Elimine la aplicación del simulador (Cmd + Shift + H para ir a la pantalla de inicio. Mantenga presionada la aplicación, haga clic en cruz, de la forma habitual en que elimina una aplicación de su teléfono)
Cmd + Shift + H nuevamente para detener el baile de aplicaciones
Regrese a su proyecto y vuelva a ejecutar
Tuve este problema al escribir / leer desde Core Data con 2 entidades configuradas. Eliminar la aplicación y volver a ejecutar el programa solucionó el problema
fuente
Acabo de eliminar el
[Simulator App Folder]/Document/*.sqlite
archivo después de hacer cambios en las entidades y funcionó. Y, por supuesto, el archivo .sqlite contiene todos los datos almacenados y las estructuras que se perderán.fuente
Elimine una aplicación del simulador y limpie un código y ejecute. Funciona bien. Puede ser su ayuda USTED.
fuente
Si está usando Swift.
Siga la respuesta de @Stas e inserte opciones, en lugar de cero, en su Delegado de aplicaciones:
fuente
Pruebe "Restablecer contenido y configuración" en el simulador. Me funcionó después de eliminar la aplicación y la compilación limpia
fuente
Experimenté el mismo problema con mi aplicación (aún no lanzada en App Store).
Así es como lo arreglé:
(3) fue el paso que finalmente lo hizo funcionar correctamente. ¡Espero que esto ayude!
fuente
Aunque a veces puede eliminar la aplicación del dispositivo al cambiar el esquema en el modelo de objeto administrado, en algunos casos esto no es posible, por ejemplo, porque ya publicó su aplicación con un esquema antiguo.
Si este es el caso, debe encargarse de migrar datos antiguos al nuevo esquema:
Versiones del modelo de datos principales y migración de datos
fuente
Deberá migrar el modelo de Core Data usando la migración. Cada vez que cambia el modelo, lo hace incompatible sin versiones. Abróchate el cinturón, es un tema un poco complicado.
http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/CoreDataVersioning/Articles/Introduction.html
fuente
Si realiza cambios en su modelo de Core Data, debe proporcionar una política de migración que le indique a Core Data cómo adoptar objetos persistentes existentes (que sus usuarios crearon con la versión lanzada actualmente) al nuevo modelo.
Para algunos escenarios, Core Data puede inferir automáticamente el mapeo del modelo antiguo al nuevo. Para cambios más complejos, es posible que deba implementar alguna lógica que realice la migración.
Los detalles se pueden encontrar en la Guía de programación de versiones y migración de datos del modelo de datos principales .
Actualización
Esta respuesta aquí en Stack Overflow cubre los conceptos básicos de la migración liviana de Core Data y también tiene algo de código para comenzar.
fuente
Este problema generalmente ocurre debido a la incompatibilidad entre la versión en la que se ha creado DB . El enfoque general de este problema es eliminar la aplicación y reinstalarla . Pero en su caso mencionado, la versión de DB es completamente diferente en Xcode 3.2 y 4.2. Así que mejor use la misma versión de Xcode para DB.
fuente
Primero, lo único que debería estar en el
xcdatamodeld
paquete son losxcdatamodel
archivos. Sus subclases NO deben estar en elxcdatamodeld
. Mueve esos fuera de allí. Existe una buena posibilidad de que estén confundiendo al compilador.En segundo lugar, el error indica que Core Data no puede encontrar su modelo. ¿Ha creado datos y luego tocó el modelo? Si es así usted está en un estado incoherente y debe arreglar que, o bien mediante la supresión de los datos (que Philippe sugerido) o haciendo rodar los cambios del modelo VOLVER .
fuente
xcdatamodel
archivo, debería estar allí. Son los archivos .h y .m los que deben moverse. Buscador de uso.Estaba recibiendo el error, pero la razón por la que recibí el error fue por lo siguiente.
Originalmente tenía una Entidad llamada "Entrada" y tenía una fila guardada para esa entidad en la base de datos. Luego agregué otra Entidad llamada "Persona" y después de agregar eso fue a construir y obtuve el error. Así que resolví el problema eliminando la Entidad "Persona" y luego creando la aplicación, eliminé la fila que estaba en "Entrada" y luego cerré la aplicación. Luego eliminé la aplicación por completo de mi teléfono y luego hice una reconstrucción y funcionó bien. No estoy seguro de qué paso corrigió el problema (la eliminación de la fila o la aplicación), pero espero que si está buscando una solución, esto ayude. :)
Editar: Ah, y si te preocupaba eliminar tu nueva Entidad (en mi caso, "Persona") para construir la aplicación nuevamente, ¡recuerda que puedes recuperarla luego usando CMD + Z!
fuente
Tuve este problema: primero reinicié mi simulador y luego limpié el proyecto y lo reconstruí. Y luego funciona.
fuente
Cuando cambia los datos principales (agregar un campo a la tabla, eliminar un campo, etc.), el archivo sqlite en la carpeta de documentos de la aplicación debe estar sincronizado con su esquema.
Este archivo no se sobrescribe de forma predeterminada, este archivo debe regenerarse.
Sigue estos pasos:
Vaya a la carpeta señalada por NSURL. (Esta ruta se puede encontrar en el mensaje de excepción generado por la aplicación antes de fallar). Ejemplo: / Usuarios // Biblioteca / Soporte de aplicaciones / iPhone Simulator // Aplicaciones // Documentos
eliminar o cambiar el nombre del archivo sqlite
Esto asegurará que el esquema y Xcode estén sincronizados.
fuente
Para el desarrollo de aplicaciones mac:
Funcionó para mí, espero que esto pueda ser útil.
fuente
Simulador de iOS -> Restablecer contenido y configuración ...
Trabajó para mi
Simulador de iOS -> Restablecer contenido y configuración ... -> Restablecer también funciona en iOS9 (xcode 7.1)
fuente