1 votes

Contacts.app se bloque au lancement

Mon application Contacts.app s'est plantée au lancement. Dans le rapport de crash, j'ai trouvé, entre autres, l'extrait suivant :

Application Specific Information:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Multiple object mappings were found for AB key AAMkADM2MDFmNGNmLWM3NmMtNGYxOS1iMDg4LWY0YjI1MGYzNjYxYQBGAAAAAABDPkLykrMnSJ1IqQdY8YscBwBYGhW8CcVeTK3joidjOJa9AAAAAAEiAABYGhW8CcVeTK3joidjOJa9AAA10vffAAA= of type itemId'
terminating with uncaught exception of type NSException
abort() called

1voto

Ady Points 4132

J'ai particulièrement remarqué cette ligne Des correspondances multiples d'objets ont été trouvées pour la clé AB AAMkADM2MDFmNGNmLWM3NmMtNGYxOS1iMDg4LWY0YjI1MGYzNjYxYQBGAAAAAABDPkLykrMnSJ1IqQdY8YscBwBYGhW8CcVeTK3joidjOJa9AAAAAAEiAABYGhW8CVeTK3joidjOJa9AAA10vffAAA= de type itemId'. ce qui, je le soupçonnais, indiquait que j'avais un doublon quelque part dans la base de données des contacts.

Voici comment je l'ai résolu, dans un terminal :

cd ~/Library/ Application\ Support/AddressBook/
grep -r MtNGYxOS1iMDg4LWY0YjI1MGYzNjYxYQBGAAAAAABDPkLykrMnSJ1IqQdY8YscBwBYGhW8CcVeTK3jo *

(cela fait partie de la "longue chaîne" ci-dessus. C'était suffisant pour moi, puisque la recherche n'a donné qu'un seul résultat, Exchange sur Sources/187CB027-195A-4D96-99B2-B8A546A743DC )

Ce fichier s'est avéré être un fichier DB SQLite. Ouvrez-le avec un lecteur SQLite. J'ai utilisé sqlitestudio.

Dans cette base de données, il y a une table ZMAPPING qui nous intéresse. Trouvez les entrées pertinentes dans cette table avec un peu de SQL

select * from zmapping where zitemid like '%AAMkADM2MDFmNGNmLWM3NmMtNGYxOS1iMDg4LWY0YjI1MGYzNjYxYQBGAAAAAABDPkLykrMnSJ1IqQdY8YscBwBYGhW8CcVeTK3joidjOJa9AAAAAAEiAABYGhW8CcVeTK3joidjOJa9AAA10vffAAA=%'

Dans mon cas, cette requête a retourné deux lignes. Notez les valeurs dans Z_PK pour toutes les lignes retournées. Maintenant, cherchez dans la table ZMAPPING les lignes avec ces valeurs Z_PK et copiez les valeurs correspondantes dans la colonne ZADDRESSBOOKUNIQUEID. En utilisant ces valeurs copiées, retournez au terminal et exécutez un grep

$ grep -r 8F436716-52E6-49A9-AC03-2A120B08 *
…
Binary file Sources/187CB027-195A-4D96-99B2-B8A546A743DC/Metadata/8F436716-52E6-49A9-AC03-2A120B083CF9:ABPerson.abcdp matches

J'ai maintenant fait strings sur ce fichier pour savoir à qui appartenait la carte d'adresse que j'étais sur le point de supprimer. Si nécessaire, prenez note de l'adresse, du numéro de téléphone, etc. que vous souhaitez conserver. Puis supprimez ce fichier.

Répétez ce processus pour toutes les autres entrées qui ont été trouvées (une de plus dans mon cas).

Enfin, supprimez les lignes de ZMAPPING que vous avez trouvées en utilisant la requête sql. N'oubliez pas de faire un commit/save.

Lancez l'application Contacts.app et recréez le contact supprimé.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X