-1

Je travaille avec une application basée sur CoreData et possède une classe AppDelegate écrite de manière inhérente lors du lancement de l'application.Erreur avec le stockage permanent CoreData

En cliquant sur le bouton, je passe un ArrayController (Section1) à une sous-classe et l'analyse afin de stocker les valeurs de la cellule TableView.

- (IBAction)saveSect1:(NSButton *)sender { 

DataMiner *data = [[DataMiner alloc] init]; 
[data parseArrayController:Section1 tag:0]; 


} 

-(void)parseArrayController:(NSArrayController *)myController tag:(NSInteger)arrayTag { 

switch (arrayTag) { 
    case 0: 

     context = appDelegate().self.managedObjectContext; 

     for (NSMutableDictionary *mydict in myController.arrangedObjects) { 

      NSNumberFormatter *format = [[NSNumberFormatter alloc] init]; 
      NSNumber *code = [format numberFromString:[mydict objectForKey:@"diagCode"]]; 
      [format release]; 

      Section_1 *section = nil; 

      section = [NSEntityDescription insertNewObjectForEntityForName:@"Section_1" inManagedObjectContext:context]; 

      section.diagCode = code; 
      section.diagDescr = [mydict objectForKey:@"diagDescr"];        
      section.sectId = [NSNumber numberWithDouble:1]; 
      section.subSectId = [NSNumber numberWithDouble:1.1]; 

     } 

     NSLog(@"%@", context.registeredObjects); 

     [Section_1 release]; 

     break; 

    default: 
     break; 
} 

} Dans un premier temps, il a fonctionné très bien, mais, maintenant, je reçois cette erreur:

L'objet géré version du modèle utilisé pour ouvrir le magasin persistant est incompatible avec celui qui a été utilisé pour créer la persistance le magasin.

Quelqu'un at-il déjà rencontré cette erreur? Aucune suggestion? Merci.

- (NSManagedObjectModel *)managedObjectModel 
{ 
if (__managedObjectModel) { 
    return __managedObjectModel; 
} 

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"CoreData_test"  withExtension:@"momd"]; 
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 
return __managedObjectModel; 
} 
+1

Ceci est l'un des premiers hits sur Google pour cette erreur, qui je pense l'explique bien. http://stackoverflow.com/questions/5572954/error-after-adding-a-new-core-data-model-version –

Répondre

0

Vos modèles de table ont changé. Vous pouvez soit supprimer l'ancienne base de données (supprimer l'application installée de l'appareil/simulateur). Changez le chemin dans le code ou effectuez une migration de base de données.

Habituellement en développement je supprime simplement l'ancienne installation. (Dans le simulateur, allez à réinitialiser le contenu et les paramètres) Si vous devez conserver les données qui sont remplies, vous devrez effectuer la migration.

Vous devrez le faire chaque fois que vous changez une table.

+0

J'apprécie votre suggestion, est-ce pour une application basée sur iOS ou MacOx? Pouvez-vous expliquer TableModel, car je travaille avec plusieurs classes ViewController qui utilisent chacune un NSTableView distinct. Je travaille avec une application MacOSX, et elle a utilisé la méthode que j'ai ajoutée ci-dessus dans AppDelegate. – user1505130

+0

Table Modèle est probablement le mauvais terme à utiliser ... Il existe un fichier xcdatamodel quelque part dans votre projet. Avez-vous modifié quelque chose après avoir compilé et exécuté le projet? Si c'est le cas, la copie existante de la base de données pour ce projet n'est plus compatible avec votre fichier. Vous devrez effectuer une migration ou supprimer l'installation existante. – Kibitz503

+0

Un grand merci, ça a marché! – user1505130

Questions connexes