J'ai une base de données de plusieurs à plusieurs relation d'article à catégorie. Lorsque j'essaie d'enregistrer, j'obtiens l'erreur suivante. Je suis incapable de trouver des informations sur ce que cela signifie, et pourquoi il existe deux versions lorsque la base de données est vide. Quelqu'un peut-il nous éclairer?iOS: erreur de données de base: NSMergeConflict pour NSManagedObject
Erreur: NSMergeConflict (0x76ae720) for NSManagedObject (0xd945560) with objectID '0xd943550 <x-coredata://09A438A8-E3F5-45FE-B9D7-106798E82E18/Article/p91>' with oldVersion = 1 and newVersion = 2
code:
NSMutableDictionary *dict = [[data objectAtIndex:i] valueForKey:@"category_names"];
NSMutableArray *values = [[NSMutableArray alloc] init];
for (NSString *value in [dict allValues]) {
NSLog(@"value = %@", value);
[values addObject:value];
}
NSMutableSet *setElements = [[NSMutableSet alloc] init];
for (int i = 0; i < [values count]; i++) {
Category *cat = [self getCategoryFor:[values objectAtIndex:i]]; // Function which has fetch to get the category for the value "name"
[setElements addObject:cat];
}
if ([setElements count] > 0)
[article addCategories:setElements];
// Save the context.
NSError* error;
if (![managedObjectContext save:&error]) {
NSLog(@"Failed to save to data store: %@", [error localizedDescription]);
NSArray* detailedErrors = [[error userInfo] objectForKey:NSDetailedErrorsKey];
if(detailedErrors != nil && [detailedErrors count] > 0) {
for(NSError* detailedError in detailedErrors) {
NSLog(@" DetailedError: %@", [detailedError userInfo]);
}
} else
NSLog(@" %@", [error userInfo]);
}
[article release];
[values release];
[setElements release];
Merci pour votre aide. J'ajoutais des données à sqlite puis j'ajoutais le sqlite au projet. Cela a semblé causer un certain type de problème de version. J'ai ajouté toutes les données nécessaires dans le code, j'ai sorti le DB du simulateur, je l'ai ajouté au projet et le problème a disparu. –
Il est très difficile d'ajouter des données directement dans un magasin SQL Core Data car il utilise son propre schéma non documenté. – TechZen