2009-08-11 8 views
3

En utilisant l'infrastructure de carnet d'adresses intégrée pour iPhone, comment puis-je enregistrer une liste spécifique de contacts dans un tableau dans NSUserDefaults? Je dois enregistrer une liste de destinataires pour plus tard. Je veux m'assurer que je ne rencontre pas de problèmes si l'utilisateur édite les contacts après la fermeture de mon application. Y a-t-il une sorte d'identifiant unique que chaque contact a, que je peux sauvegarder et consulter plus tard?Enregistrement d'une liste de contacts dans NSUserDefaults

Répondre

2

ABRecordID faire de certainement le changement (ayant appris cela à la dure - en raison de la synchronisation de contact de la machine multiple)

Matt Gemmell a une belle writeup à iphone-dev-tips-for-synced-contacts

Je ne stocke pas les nom composite, mais plutôt ABRecordId, prénom, nom, adresse e-mail et numéro de téléphone (les deux derniers sont directement utilisés par mon application).

Si je ne reçois pas un coup sur

ABRecordRef aRef = ABAddressBookGetPersonWithRecordID(addressBook, aRecordId); 

J'utilise un tas de code pour trouver des correspondances possibles sur le nom, prénom, puis l'affiner par des numéros de téléphone. En conclusion, j'associe un UUID généré pour le contact afin que toute cette résolution (potentiellement) floue soit extraite des données que j'associe à un contact.

0

ABRecordRef possède une propriété ABRecordID que vous devriez être en mesure d'utiliser pour l'identifier de manière unique en vue d'un accès ultérieur.

+0

comme mentionné ci-dessus ce n'est pas fiable en raison de la synchronisation. peut-être qu'en 2009 ce n'était pas le cas. – MrTristan

2

Soyez prudent avec cela, je crois qu'il y avait un problème (au moins dans pré OS3.0) où cet ABRecordID pourrait changer lorsque l'utilisateur synchronisé leur appareil. Cela peut évidemment causer des problèmes si vous comptez utiliser à nouveau cet identifiant. Je ne sais pas si cela se passe encore dans OS3.0 ou non.

http://discussions.apple.com/thread.jspa?threadID=1771736

Juste quelque chose à surveiller.