Estoy realmente atrapado aquí con las pruebas de actualización de v1 a v2 de una aplicación de iPhone. Tengo lanzamientos de IPA que estoy probando a través de una distribución ad hoc a través de iTunes a mi dispositivo iPhone, uno para v1 de la aplicación y otro para v2. Tenga en cuenta que:"No se puede encontrar el modelo para el almacén de origen" que se produce durante el iphone "Migración ligera automática"?
- v1 instala funciona muy bien en mi dispositivo
- si elimino v1 y desplegar v2 (así que no hay migración) entonces funciona bien
- cuando despliego v2 mientras v1 ya está ahí tengo la de error: "la razón = no se puede encontrar el modelo de almacén de origen"
Un fragmento del error ... *
reason=**Can't find model for source store**}, {
URL = "file://localhost/var/mobile/Applications/AAAAF424-D6ED-40FE-AB8D-66879386739D/Documents/MyApp.sqlite";
metadata = {
NSPersistenceFrameworkVersion = 320;
<cut>
- cuando uso "disco de teléfono" para mirar mi dispositivo Veo que hay Documentos archivo/MyApp.sqlite
Pregunta - ¿Alguna idea de cómo resolver este? ¿Qué depuración/análisis podría hacer aquí? Avíseme si necesita más información.
Lo que he hecho como una visión general es:
- desplegado mi v1 aplicación de la AppStore sin necesidad de crear una versión para mi modelo de datos básicos (es decir, no era realmente consciente en el momento de versiones, por lo no instalar uno)
- el único cambio adicional para v2 era un nuevo atributo, por un modelo de
- Así que para la liberación v2 lo que he hecho es:
- recreó un nuevo modelo de datos Básicos
- Creado un v1 Versión para el modelo
- Creado el objeto/atributos para v1
- guardadas
- creado una versión v2 para el modelo
- Creado el atributo adicional
- guardadas
- Se reconstruyen las clases de objetos gestionados
- Se actualizó el código para poner las opciones en http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweight.html#//apple_ref/doc/uid/TP40008426-SW1 al llamar a addPersistentStoreWithType
PS versión más completa del error si esto ayuda - esta vez se trata de simular el error de migración en el simulador
, reason=Can't find model for source store}, {
URL = "file://localhost/Users/greg/Library/Application%20Support/iPhone%20Simulator/4.3.2/Applications/69FDFDCF-631D-4191-B852-CD75151B1EA9/Documents/MyApp.sqlite";
metadata = {
NSPersistenceFrameworkVersion = 320;
NSStoreModelVersionHashes = {
Config = <5f92f988 71e11a66 554ae924 61887562 22b8de8a c318b110 e3e4a569 81adafa2>;
};
NSStoreModelVersionHashesVersion = 3;
NSStoreModelVersionIdentifiers = (
""
);
NSStoreType = SQLite;
NSStoreUUID = "3B9832DA-E3A1-431B-83E8-43431A7F3452";
};
reason = "Can't find model for source store";
}
PSS. Si esto ayuda a los contenidos del modelo de datos básicos *.directorio de madre/paquete para cada archieve versión son:
v1
-rw-r--r-- 1 greg staff 1664 5 Sep 21:06 MyApp.mom
-rw-r--r-- 1 greg staff 2656 5 Sep 21:06 MyApp.omo
-rw-r--r-- 1 greg staff 480 5 Sep 21:06 VersionInfo.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd>">
<plist version="1.0">
<dict>
<key>NSManagedObjectModel_CurrentVersionName</key>
<string>MyApp</string>
<key>NSManagedObjectModel_VersionHashes</key>
<dict>
<key>MyApp</key>
<dict>
<key>Config</key>
<data>
X5L5iHHhGmZVSukkYYh1YiK43orDGLEQ4+SlaYGtr6I=
</data>
</dict></dict></dict>
</plist>
v2
-rw-r--r-- 1 greg staff 497 2 Oct 12:47 MyApp 1.mom
-rw-r--r-- 1 greg staff 1601 2 Oct 12:47 MyApp 2.mom
-rw-r--r-- 1 greg staff 1695 2 Oct 12:47 MyApp.mom
-rw-r--r-- 1 greg staff 2920 2 Oct 12:47 MyApp.omo
-rw-r--r-- 1 greg staff 665 2 Oct 12:47 VersionInfo.plist
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd>">
<plist version="1.0">
<dict>
<key>NSManagedObjectModel_CurrentVersionName</key>
<string>MyApp</string>
<key>NSManagedObjectModel_VersionHashes</key>
<dict>
<key>MyApp</key>
<dict>
<key>Config</key>
<data>
Z/n8092QBHPfBwInZvIm1lei53T1UtZhpNzjl3JA0gs=
</data>
</dict>
<key>MyApp 1</key>
<dict/>
<key>MyApp 2</key>
<dict>
<key>Config</key>
<data>
Fih24clI+kZszFd3X6Gm8itq8YDxudiKnjHW8ydNmps=
</data>
</dict></dict></dict>
</plist>
EDIT: Otra pregunta que no está claro para mí, como lo ha planteado la revisión de la jrturton enlace proporcionado a continuación es:
- ¿Cómo hace uno ahora en la última versión de XCode hacer el "Establecer la versión actual" para t él apropiado archivo de versión de modelo? es decir, las publicaciones anteriores resaltan dos pasos diferentes: una Versión de modelo adicional, pero luego por separado "Establecer versión actual"
- ¿Cómo se supone que uno use el campo "identificador" de Core Data Model que se puede establecer para cada modelo de datos básicos? archivos. Está en el inspector. El parámetro existe contra, por ejemplo, el modelo MyApp 1.xcdatamodel, MyApp 2.xcdatamodel y MyApp.xcdatamodel, entonces, ¿qué necesita poner en cada uno aquí?
¿Esto ayuda? http://stackoverflow.com/questions/2310216/implementation-of-automatic-lightweight-migration-for-core-data-iphone – jrturton
gracias - el punto 1 y 3 no ayudaron, pero en cuanto al punto 2: ¿usted ¿sabe cómo se llevaría a cabo este punto en la última versión de XCode4? Es decir, "Seleccione su archivo xcdatamodel Diseño -> Modelo de datos -> Agregar versión modelo (expanda su elemento xcdatamodeld) Seleccione el archivo" 2 "(o posterior), Diseño -> Modelo datos -> Establecer versión actual (edite esta versión)" . Voy a elaborar más sobre esto en la parte inferior de mi pregunta ... – Greg