core data migration xcode 4.2 n'est pas mis à jour datatables pour l'application déjà disponible dans l'App Store

nous utilisons des données de base pour notre catalogue en ligne et son fonctionnement fonctionne bien et l'application est disponible dans le magasin d'applications. Maintenant, j'ai besoin de mettre à jour la date de base avec certains champs et attributes. Il a migré vers un nouveau, mais les anciennes données déjà stockées dans l'application sont complètement disparu. J'ai essayé différentes façons de le conserver en utilisant ce code

NSSsortingng *databaseFilePath = [[self applicationDocumentsDirectory] ssortingngByAppendingPathComponent: @"App_iOS.sqlite"]; NSFileManager *fileManager = [NSFileManager defaultManager]; [fileManager removeItemAtPath:databaseFilePath error:NULL]; NSURL *storeUrl = [NSURL fileURLWithPath: databaseFilePath]; NSError *error = nil; if( ![[self persistentStoreCoordinator] addPersistentStoreWithType:NSSQLiteStoreType configuration: nil URL:storeUrl options:nil error:&error]) { [__managedObjectContext insertObjects]; } else { [__managedObjectContext updatedObjects]; } 

Je ne reçois pas encore de solution pour conserver datatables dans l'application. J'ai cherché sur Internet pour cette plupart du visage le même problème mais je ne reçois pas encore la bonne solution

J'ai maintenant découvert que c'est assez simple – une fois que vous savez où chercher. # Dans mon AppDelegate, j'ai configuré le NSPersistentStoreCoordinator – et vous devez append quelques options pour lui dire de gérer la migration automatique:

  NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; NSError *error; _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]]; if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {   // Handle error  NSLog(@"Problem with PersistentStoreCoordinator: %@",error); } 

Ensuite, vous devez faire en xCode:

 1. Select your xcdatamodeld file 2. Select the Editor Menu at the top - then choose Add Model Version 3. Now your xcdatamodeld file have two (modelname.xcdatamodel & modelname2.xcdatamodel ) . 4. Now modelname.xcdatamodel have the green check mark implies it is current version, but we need to change the modelname2.xcdatamodel as a current version 5. Select the xcdatamodeld file and then select the View Menu at the top - then Choose Utilities - then Choose the Show File Inspector is shown in right side of Xcode and then Select the Versioned Core Data Model - have Current(DropDownList) - select modelname2(the one you just made current version have green check mark). 6. Now when you install this version onto a device that has the old model - it will automatically upgrade that model to the new model. 

Cela semble génial et aussi simple que je le voulais – mais je pense que vous devez être prudent lors du développement lorsque vous modifiez un model – sinon vous devrez créer une nouvelle version pour chaque changement.

Je pense que je vais garder tous les files modifiés et une fois que je serai prêt à déployer ma mise à jour, je supprimerai tous les files intermédiaires et je les déploierai simplement avec les templates les plus anciens et les plus récents.

Vous devez utiliser la technique de migration de données. J'ai fait face à la tâche similaire tout à l'heure.
Il existe un tutoriel sur ce sujet. Migration de données.