Ma question est similaire à this one.Erreurs de données de base contre les exceptions Partie 3
Contexte
Je crée un grand nombre d'objets dans un magasin de données de base en utilisant NSOperations pour accélérer les choses. J'ai suivi toutes les règles de multithreading Core Data - J'ai un seul coordinateur de stockage persistant et un contexte d'objet géré par thread qui, lors de la sauvegarde, est en train de revenir au contexte de l'objet géré principal.
Le problème
Lorsque le nombre de threads en cours d'exécution à la fois est plus de 1, je reçois l'exception connecté sauvegarde de mon magasin de données de base:
NSExceptionHandler has recorded the following exception:
NSInternalInconsistencyException -- optimistic locking failure
Ce que j'ai
Mon code qui crée de nouvelles entités est assez complexe - il rend les entités qui ont des relations avec d'autres entités qui pourraient être créées dans une séparation te fil.
Si je remplace ma routine de création d'objets par un code très simple ne faisant que des entrées non liées, tout fonctionne parfaitement. Au début, à l'exception des exceptions, j'obtenais une erreur d'enregistrement indiquant que les données de base ne pouvaient pas être sauvegardées en raison de l'échec de la fusion. J'ai lu les documents et réalisé que j'avais besoin d'une politique de fusion sur le contexte d'objet géré que je sauvegardais. Je l'ai mis en place et comme this question états, l'erreur d'enregistrement disparaît, mais l'exception reste.
Ma question
Ai-je besoin de vous soucier de ces exceptions? Si je dois me débarrasser des exceptions, des idées sur la façon dont je le fais?
Merci pour votre commentaire Benedict.J'ai mis à jour ma question avec plus de détails. J'ai étudié les directives de multithreading de données de base très soigneusement et j'ai passé beaucoup de temps à m'assurer que, avec un algorithme de création d'entité simple, les NSOperations fonctionnent parfaitement. Je me demande si la solution est d'aller à propos de ma création d'objet d'une manière différente ... –