Cambio del model CoreData: compatibilidad retro

He estado golpeando este problema con conetworkingata y me está volviendo loco porque debería ser directo

Actualmente estoy trabajando en el primer lanzamiento de esta aplicación, obviamente sigo tweeking el model de datos básicos aquí y allá,

Sin embargo, cada vez que cambie el model de datos del núcleo, necesito desinstalar la aplicación y reinstalar la nueva versión.

Esto es pasable mientras que solo soy yo, pero una vez publicado, necesito poder cambiar la actualización de la aplicación sin que mis usuarios vuelvan a instalar.

Qué me estoy perdiendo,

¿Hay algún código que necesito escribir para decirle a los datos centrales cómo modificar los datos persistentes existentes a los nuevos?

Gracias por tu ayuda

Jason

Modelo de datos básicos: migration: agregando nuevos attributes / campos al model de datos actual: no se requiere RESET de simulador o aplicación.

Pasos:

1) Crear la versión del model del editor: darle un nombre significativo como ModelVersion2

2) Vaya a esa versión del model y realice cambios en su model.

3) Ahora ve a YourProjectModel.xcdatamodeld y configura la versión actual a la versión recién creada.

4) Agregue el código siguiente al lugar donde crea el coordinador persistente:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; 

y establecer valor de opciones como opciones para el método:

 [__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error] 

En mi caso, se ve algo como esto:

 - (NSPersistentStoreCoordinator *)persistentStoreCoordinator { if (__persistentStoreCoordinator != nil) { return__persistentStoreCoordinator; } NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"LGDataModel.sqlite"]; NSError *error = nil; __persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; if (! [__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) { NSLog(@"Unresolved error %@, %@", error, [error userInfo]); abort(); } return__persistentStoreCoordinator; } 

Enlace: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmInitiating.html#//apple_ref/doc/uid/TP40004399-CH7-SW1

Necesita leer versiones de Core Data y migration . Aquí hay una publicación de blog que lo explica bien:

http://www.timisted.net/blog/archive/core-data-migration/