2010-11-08 23 views
2

Je construis une application qui synchronise les contacts d'une source en ligne. Tout fonctionne bien jusqu'à présent ... quand le téléphone a un carnet d'adresses:ABAddressBook - plusieurs carnets d'adresses?

ABAddressBookRef addressBook = ABAddressBookCreate(); 
ABRecordRef group1 = ABGroupCreate(); 
ABRecordSetValue(group1,kABGroupNameProperty,@"Group1",nil); 
ABAddressBookAddRecord(addressBook,group1,nil); 
ABAddressBookSave(addressBook,nil); 

ABRecordRef person = ABPersonCreate(); 
// Edit person values... 

ABGroupAddMember(group1,person,nil); 
ABAddressBookAddRecord(addressBook,person,nil); 
ABAddressBookSave(addressBook,nil); 
CFRelease(person); 
CFRelease(addressBook); 

Le problème se produit, mais quand le téléphone a déjà plusieurs carnets d'adresses. Je teste sur un téléphone qui a un carnet d'adresses pour Tous les contacts, un pour Gmail, etc. Lorsque j'ajoute un contact de la manière ci-dessus, il l'ajoute au carnet d'adresses Gmail, et dans le processus dépouille l'identificateur "Group1" du contact. Y at-il un moyen que je peux changer le ABAddressBookRef pour pointer vers un carnet d'adresses spécifique dans le téléphone?

Répondre

0

Selon le reference, ABAddressBookCreate renvoie toujours un objet de carnet d'adresses rempli à partir de la base de données du carnet d'adresses du système. Ce qui signifie qu'il n'y a jamais qu'un seul carnet d'adresses, même si vous avez plusieurs instances de ABAddressBook que vous utilisez pour interagir avec lui.

0

Mike, vous voudrez peut-être jeter un oeil à ce poste: Obtaining Specific ABSource from ABAddressBook in iOS 4+

Bien que je crois Alex est juste qu'il n'y a jamais qu'un seul carnet d'adresses, ce carnet d'adresses peut consister en plusieurs sources (ABSource). Et, dans iOS 4+, il est possible d'identifier et de manipuler spécifiquement des sources particulières.