Je sais que c'est une question fréquemment posée, mais aucune des solutions que j'ai trouvées ne semble fonctionner pour moi.Core Data migration "impossible de fusionner des modèles avec deux entités différentes nommées 'foo'"
Voici ma situation: J'ai un modèle de données pour mon application, et je voulais y ajouter des versions. Donc, dans XCode, j'ai fait Design -> Data Model -> Ajouter une version du modèle. J'ai également mis à jour la méthode persistentStoreCoordinator de mon délégué pour ressembler à ceci:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator != nil) {
return persistentStoreCoordinator;
}
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory]
stringByAppendingPathComponent: @"foo.sqlite"]];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
nil];
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if(![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
/*Error for store creation should be handled in here*/
}
return persistentStoreCoordinator;
}
Juste pour vous assurer que tout fonctionnait toujours, je l'ai fait un nettoyage tout, construire et testé dans le simulateur. Tout a fonctionné jusqu'à présent. Ensuite, j'ai choisi le nouveau modèle de données de la version, l'a défini comme la version actuelle en utilisant XCode et ajouté un attribut supplémentaire à une entité. J'ai ensuite fait un tout nettoyer, construire. Et maintenant, chaque fois que je lance l'application, elle se bloque avec cette erreur: 'Impossible de fusionner des modèles avec deux entités différentes nommées' foo ''.
Qu'est-ce que je fais mal? J'ai essayé de m'assurer qu'aucun modèle de données n'est ajouté à la cible, en ajoutant juste le modèle de données de version actuel à la cible, et les deux. Chaque fois que je teste, je m'assure de tout nettoyer.
Quelqu'un peut-il nous éclairer sur les raisons pour lesquelles cela ne fonctionne pas pour moi?
EDIT:
ici est ma méthode de managedObjectModel:
- (NSManagedObjectModel *)managedObjectModel {
if (managedObjectModel != nil) {
return managedObjectModel;
}
managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
return managedObjectModel;
}
s'il vous plaît ajoutez votre - (NSManagedObjectModel *) Méthode managedObjectModel. Je suspecte le problème là-bas. –