Datos básicos: manejar el caso cuando iCloud se apaga o enciende

Estoy implementando el soporte de iCloud en mi aplicación Core Data (solo iOS 7, aún no lanzado, el soporte de iCloud será desde el primer día). Revisé la session WWDC 2013 207 sobre los cambios en iCloud y estoy muy contento de ver las mejoras (tuve alguna experiencia previa con iCloud también).

Las cosas están funcionando muy bien. Sin embargo, no estoy seguro de cómo manejar el caso cuando el usuario habilita o deshabilita iCloud de las preferences del sistema, esto da lugar a la creación de nuevos files .sqlite en otro directory y, por lo tanto, a la pérdida de datos del usuario.

A continuación, explico cómo implemento la tienda persistente agregando:

 - (void) addPersistentStoreToCoordinator { NSMutableDictionary *options = [NSMutableDictionary dictionary]; [options setObject:@YES forKey:NSMigratePersistentStoresAutomaticallyOption]; [options setObject:@YES forKey:NSInferMappingModelAutomaticallyOption]; NSURL *iCloud = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier: nil]; if (iCloud) { [options setObject:@"ABC123~com~myapp~myapp" forKey:NSPersistentStoreUbiquitousContentNameKey]; } NSError* error; // the only difference in this call that makes the store an iCloud enabled store // is the NSPersistentStoreUbiquitousContentNameKey in options. [persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:self.storeURL options:options error:&error]; } - (NSURL *)storeURL { NSURL *documentsDirectory = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:NULL]; return [documentsDirectory URLByAppendingPathComponent:@"MyApp.sqlite"]; } 

¿Cómo guardo los datos de Core Data cuando el usuario desconecta / enciende la preference iCloud en la configuration?

(Nota al margen: he logrado manejar el caso manualmente cuando iCloud pasa del estado [OFF] > [ON] – obteniendo todos los datos de Core Data anteriores, y luego guardando estas subclasss de NSManagedObject en Core Data con iCloud habilitados. Sin embargo, este código es muy específico de la aplicación (y bastante inestable). Estoy buscando soluciones más genéricas).

Gracias

Tenía exactamente las mismas preguntas y encontré este https://gist.github.com/mluisbrown/7015953 . Funciona perfectamente para mí ahora.