Ou Xcode cache-t-il les fichiers CoreData?

J’ai le message d’erreur suivant :
2021-10-08 10:01:01.857333+0200 koussikoussa[48663:2668991] [error] warning: ‹ MOEtatDep › (0x6000017c2260) from NSManagedObjectModel (0x600000384780) claims ‹ MOEtatDep ›.

CoreData: warning: ‹ MOEtatDep › (0x6000017c2260) from NSManagedObjectModel (0x600000384780) claims ‹ MOEtatDep ›.

2021-10-08 10:01:01.857429+0200 koussikoussa[48663:2668991] [error] error: +[MOEtatDep entity] Failed to find a unique match for an NSEntityDescription to a managed object subclass

CoreData: error: +[MOEtatDep entity] Failed to find a unique match for an NSEntityDescription to a managed object subclass

Je crois deviner d’où vient l’erreur : J’ai supprimé de mon simulateur l’appli correspondante pour vérifier que des dispositions nouvelles, au démarrage de l’appli, fonctionnaient correctement. CoreData n’a peut-être pas vu sa base de données effacée par la manoeuvre, qui crée alors une seconde base. Tout se passe comme si CoreData allait chercher ses données dans la seconde tandis qu’il continuerait de les sauvegarder dans la première.
Je savais, dans de précédentes versions, chercher la base comme un fichier SQLite dans la bibliothèque, mais là, je ne vois plus du tout ou Xcode cache ses fichiers… Quelqu’un saurait où les chercher pour vérifier mon hypothèse, et tenter de corriger ça ?

J’ai retrouvé ce que je crois être les fichiers auparavant avec une désinence .db; ils ont actuellement une désinence .mdb et sont cryptés par Apple… Impossible de les ouvrir ou d’en retrouver un enregistrement non unique. Le warning n’apparaît plus ; mais il reste dans la base de données des enregistrements fautifs, non conformes aux filtres que pose l’app elle-même pour autoriser l’enregistrement. (Elle interdit la nullité de tous les items et l’enregistrement de valeurs par défaut involontaires). Je ne sais pas si j’ai le droit d’effacer ces fichiers et je n’ai pas envie de tout casser juste pour le savoir.

Quelqu’un sait ? Anthony F. ?

Salut @fjacquemin,

Je n’utilise pas CodeData, donc c’est compliqué pour moi de te répondre.

Par contre, j’avais lu que les fichiers CoreData étaient encryptés, donc impossibles à lire.

J’ai aussi trouvé ce sujet sur le forum qui pourrait t’aider avec un lien vers StackOverflow.

Merci à thony F. pour avoir répondu bien qu’il n’utilise pas CoreData. J’ai trouvé aussi le message sur StackOverflow, qui semble indiquer un bug qui existait déjà avec la précédente version de Xcode. Après des tentatives, le problème est a demi-résolu : il retrouve ses enregistrements, ne voit plus qu’une seule description, mais il persiste à avoir perdu des enregistrements remplacés par des valeurs nulles normalement impossibles à la saisie sur les quelques enregistrements effectués lorsqu’Xcode voyait double… Recommandation : voir avec une autre base de données.

CoreData n’est pas encore fiable.

CoreData existe depuis très très longtemps : je pense qu’il est aussi fiable qu’il pourra l’être. Le fait est que c’est un outil (trop) complexe et bourré de limitations.
Personnellement j’ai vraiment le sentiment qu’il me fait perdre du temps en comparaison du SQLite classique.
A mon avis :

  • si on veut faire du SQLite, il vaut mieux le faire à la main.
  • si on veut une gestion plus simple, basée sur les objets, alors Realm plus agréable