2010-07-08 4 views

Répondre

12

ABRecord est un type C opaque. Ce n'est pas un objet au sens d'Objective-C. Cela signifie que vous ne pouvez pas l'étendre, vous ne pouvez pas ajouter une catégorie, vous ne pouvez pas le signaler. La seule chose que vous pouvez faire est d'appeler les fonctions décrites dans ABRecord Reference avec l'ABRecord comme paramètre.

Vous pouvez faire deux choses pour être en mesure de garder l'information référencée par la ABRecord ARROUND:

  1. obtenir l'ID ABRecords par ABRecordGetRecordID(). L'ABRecordID est défini comme int32_t, vous pouvez donc le convertir en NSInteger et le stocker où vous voulez. Vous pouvez ensuite récupérer l'enregistrement à partir de ABAddressBookGetPersonWithRecordID() ou ABAddressBookGetGroupWithRecordID(). Mais conscient, l'enregistrement pourrait être modifié ou même supprimé par l'utilisateur ou une autre application en attendant.

  2. Copiez toutes les valeurs de l'enregistrement dans une sous-classe NSObject standard et utilisez NSCoding ou d'autres techniques pour le stocker. Vous ne pourrez alors pas bénéficier des modifications ou des ajouts à l'enregistrement que l'utilisateur aurait pu effectuer.

De cause, vous pouvez combiner les deux approches.

+0

Merci pour la réponse, cela apporte la compréhension! –

+0

très utile. Je luttais avec un moyen d'une personne de retour après avoir enregistré une copie dans les données de base de mes applications. Donc cela a aidé. – CW0007007